首页 > 其他分享 >迁移与备份、Dockerfile、docker 私有仓库

迁移与备份、Dockerfile、docker 私有仓库

时间:2024-06-21 17:36:58浏览次数:3  
标签:容器 centos 备份 vim 镜像 docker Dockerfile

【迁移与备份】

 1 #1  镜像从哪来的?
 2     1 docker pull 拉的,远程仓库--》国内镜像站
 3     
 4     2 通过容器打包成镜像
 5         -centos镜像运行成容器---》装了vim
 6         -把装了vim的容器---》打包成镜像
 7         -以后拿到这个镜像--》再运行成容器,都会带vim命令
 8         
 9     3 Dockerfile构建
10 
11 #2  容器保存为镜像
12     -运行一个centos容器(先把之前运行的镜像都删除)
13     docker run -id --name centos centos:centos7
14     -在容器中装vim
15     docker exec -it centos /bin/bash
16     yum install vim -y
17     
18     -把容器做成镜像(centos+vim)
19     docker commit centos centos_vim_image
20 
21     -把centos_vim 容器删除
22     docker rm centos_vim -f
23     -基于新构建的镜像,运行成容器
24     docker run -id --name centos_vim centos_vim_image:latest
25     -进入到容器中,查看,软件都在
26     docker exec -it c3e633bd1 /bin/bash
27 
28 
29 =============================================
30 31 
32 本地镜像---推送到远端docker仓库中---》私有仓库
33     -早期 这个是免费的---》后期好像收费
34     
35     -给镜像打个tag 
36     docker tag 镜像id  镜像新名字(账号名/镜像名)
37     -登录到你账号中  docker login  输入账号密码
38     
39     
40     -docker push 镜像名字
41         docker push 镜像新名字
42     -别人就可以下载了
43      
44  
45     
46 #3 镜像备份和恢复
47     docker save -o centos_vim_image.tar centos_vim_image
48     -删除容器,删除镜像
49     -把备份的镜像恢复
50     docker load -i centos_vim_image.tar

 

 

 。

【Dockerfile】

dockerfile介绍和常用命令

 1 #1 镜像从哪里来的?
 2     1 远程仓库拉取的 docker pull   (hub.docker---》搭建私有仓库)
 3     2 用容器做成的镜像 docker commit 
 4     3 把备份的恢复 docker load
 5     4 使用Dockerfile来构建(这种多)
 6         
 7 #2 什么是Dockerfile
 8     Dockerfile是由一系列命令和参数构成的脚本文件,这些命令应用于基础镜像并最终创建一个新的镜像
 9    
10     # centos7中,装了vim,在根路径下新建了一个文件 lqz.txt,写了写内容   
11 
12 # 3 Dockerfile的命令
13     FROM 基础镜像            #基于哪个基础镜像来构建
14     MAINTAINER lqz          # 声明镜像的创建者
15     ENV key value          # 设置环境变量 (可以写多条)
16     ENV key value          # 设置环境变量 (可以写多条)
17     RUN command          #是Dockerfile的核心部分(可以写多条)
18     ADD source_dir/file dest_dir/file     #将宿主机的文件复制到镜像内,如果是一个压缩文件,将会在复制后自动解压
19     COPY source_dir/file dest_dir/file     # 和ADD相似,但是如果有压缩文件并不能解压
20     WORKDIR lqz     # 设置工作目录,运行起这个容器,来到的路径就是这个路径
21     
22     CMD   # 启动并运行容器执行的命令

 

 

 

 

小案例

 1 # 构建一个带vim的centos:7镜像,根路径下有/lqz/ss.py
 2 
 3 vim Dockerfile
 4 
 5 FROM centos:centos7
 6 MAINTAINER jh
 7 ENV name jh
 8 ARG age 18
 9 RUN mkdir /jh
10 RUN touch /jh/ss.py
11 RUN echo 'print(11)' > /jh/ss.py
12 RUN echo $name
13 RUN echo $age
14 WORKDIR /jh
15 
16 
17 
18 
19 # 基于dockerfile构建镜像,不要忘了 .   基于当前路径下的Dockerfile 构建镜像(本质原理:起来一个docker容器 ,运行上述命令,又打包成镜像)
20 docker build -t='centos_jh_vim' . 
21 docker images
22 # 基于这个镜像运行容器
23  docker run -id --name xx centos_jh_vim
24 # 进入到容器
25 docker exec -it xx /bin/bash
26 # 验证vim,和文件夹,文件是否存在

 

 

 

案例2:

 1 FROM centos:centos7
 2 MAINTAINER wxx
 3 ENV name wxx
 4 RUN mkdir /wxx
 5 RUN touch /wxx/ss.py
 6 RUN echo 'input()' > /wxx/ss.py
 7 WORKDIR /wxx
 8 CMD ['python' ,'./ss.py'] # 运行容器时会默认加上 /bin/sh -c
 9 
10 # 基于dockerfile构建镜像,不要忘了 .   基于当前路径下的Dockerfile 构建镜像
11 docker build -t='centos_py' . 
12 docker images
13 # 基于这个镜像运行容器
14  docker run -id --name yy centos_py python /wxx/ss.py
15 # 进入到容器
16 docker exec -it yy /bin/bash
17 # 查看环境变量
18 # python看
19 os.environ.get('name')
20 # shell看
21 echo $name

 

 

 。

【Dockerfile常用和不常用命令】

 1 # 1 所有命令
 2 https://zhuanlan.zhihu.com/p/419175543?utm_id=0
 3 
 4 FROM: 指定基础镜像
 5 RUN: 构建镜像过程中需要执行的命令。可以有多条。docker build
 6 CMD:添加启动容器时需要执行的命令。多条只有最后一条生效。可以在启动容器时被覆盖和修改
 7 ENTRYPOINT:同CMD,但这个一定会被执行,不会被覆盖修改。
 8 LABEL:表明镜像的作者。将被遗弃,被LABEL代替。
 9 EXPOSE:设置对外暴露的端口。
10 ENV:设置执行命令时的环境变量,并且在构建完成后,仍然生效
11 ARG:设置只在构建过程中使用的环境变量,构建完成后,将消失
12 ADD:将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL作为要拷贝的文件
13 COPY:将本地文件或目录拷贝到镜像的文件系统中。
14 VOLUME:添加数据卷
15 USER:指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令
16 WORKDIR:设置工作目录
17 
18 
19 # 2 docker logs 容器名字/id号  查看镜像运行成容器时,错误日志
20     -如果容器没起来,看日志排查错误
21     
22 # 3 CMD  ENTRYPOINT  --https://zhuanlan.zhihu.com/p/548188679
23 #相同点:
24 只能写一条,如果写了多条,那么只有最后一条生效。
25 容器启动时才运行,运行时机相同。
26 # 不同点:
27 ENTRYPOINT不会被运行的command覆盖,而CMD则会被覆盖。
28 如果我们在Dockerfile中同时写了ENTRYPOINT和CMD,并且CMD指令不是一个完整的可执行命令,那么CMD指定的内容将会作为ENTRYPOINT的参数
29 
30 # 4 ARG 和 ENV
31 ENV:设置执行命令时的环境变量,并且在构建完成后,仍然生效
32 ARG:设置只在构建过程中使用的环境变量,构建完成后,将消失

dockerfile构建一个djagno项目(books图书管理系统)

 1 # 以图书管理系统为例---》公司使用docker流程
 2 
 3 
 4 # 公司中,使用Docker开发的工作流程
 5 第一步:有一个项目,pycharm开发着,开发完后
 6 第二步:在项目路径下新建Dockerfile,写入
 7 FROM python
 8 MAINTAINER lqz
 9 WORKDIR /soft
10 COPY ./requirements.txt /soft/requirements.txt
11 RUN pip install -r requirements.txt -i https://pypi.doubanio.com/simple
12 CMD ["python","manage.py","runserver","0.0.0.0:8080"]
13 第三步:把代码提交到git
14 
15 
16 ------------------
17 第四步:上线人员:在上线机器上,把代码啦下来
18 git clone https://gitee.com/liuqingzheng/books.git
19 第五步:构建镜像
20 docker build -t='django_books' .
21 第六步:运行容器
22 docker run -id --name=books -v /root/project/books:/soft -p 8080:8080 django_books:latest
23 第七步:其它人访问宿主机的8080端口就能看到项目了
24 
25 ---------
26 第八步:开发人员继续提交代码
27 第九步:运维人员pull代码,重启容器,用户就可以看到最新的了
28 
29 重启docker容器即可(第三方依赖变了)--》重写构建镜像,运行容器

乌班图构建redis(跟底层宿主机无关):参考文章https://zhuanlan.zhihu.com/p/623811065

【docker 私有仓库】

有个远程仓库 ,docker官方提供的 ---》我们可以把我们的镜像传上去
公司做的镜像,一般不放在远程仓库,公司会自己搭建私有仓库(把公司制作的镜像传到私有仓库)

 

【镜像传到官方仓库】

 1 目前情况做不了
 2 
 3 # 第0步:在远端创建仓库
 4 # 第一步:给镜像打标签
 5     docker tag 086e6b3e71c0 liuqingzheng/lqz_books:v1
 6 # 第二步:登录到远程
 7     docker login
 8     用户名:不是邮箱
 9     密码:挺复杂
10     
11 # 第三步:提交
12     docker push liuqingzheng/lqz_books:v1
13         
14 # 第四步:别人就可以下载了
15     docker pull liuqingzheng/lqz_books:v1

 

【镜像分层】

 1 每一个Dockerfile命令都会构建一层镜像(本质上是每一层都会启动一个容器,执行完命令后,将容器进行提交,通过查看下载下来的镜像,发现历史层信息的层ID是missing,其实是因为原本的层id只存在于构建镜像的宿主机上,一旦转移镜像后,历史层消息中将只保留最新一层的ID
 2 
 3 
 4 # 只要执行一个命令就会多一层
 5 RUN yum install vim -y
 6 RUN yum install git -y
 7 
 8 
 9 # 查看镜像分层的命令
10 docker history  liuqingzheng/lqz_books:v1
11 # 好处:
12 构建快,分发方便,如果本地有某一层了,这一层就不需要下载了
13 
14 
15 # 补充:Dcokerfile写命令,建议多条命令合为一条---》只会生成一层
16 RUN python -m pip install --upgrade pip &&\
17 python -m pip install --upgrade setuptools &&\
18 pip install -r requirements.txt

 

标签:容器,centos,备份,vim,镜像,docker,Dockerfile
From: https://www.cnblogs.com/liuliu1/p/18260995

相关文章

  • docker文章参考及初步了解
    docker简介:docker是一种轻量级的操作系统虚拟机解决方案。 docker组件由三部分构成:1.docker服务端与客户端:dockers服务端与客户端可以是多对多的关系,但是客户端和服务端进行通信是通过服务端的守护进程,即客户端连接到服务端的守护进程来连接服务端。2.镜像与容器:镜像类似为类......
  • 从 Docker Hub 拉取镜像受阻?试试这些解决方案
    最近一段时间Docker镜像一直是Pull不下来的状态,感觉除了挂......
  • Ubuntu 20.04 上安装和使用 Docker
    如何在Ubuntu20.04上安装和使用Docker如何在Ubuntu20.04上安装和使用Docker-阿里云开发者社区(aliyun.com) 简介:本文最先发布在:https://www.itcoder.tech/posts/how-to-install-and-use-docker-on-ubuntu-20-04/Docker是一个开源的容器化平台,它允许你构建,......
  • 从 Docker Hub 拉取镜像受阻?这些解决方案帮你轻松应对
    最近一段时间Docker镜像一直是Pull不下来的状态,感觉除了挂......
  • CentOS 7 安装 docker-compose
    在CentOS7上配置docker-compose需要几个步骤。以下是详细步骤:1、安装DockerCompose:DockerCompose的官方推荐安装方式是使用pip(Python的包管理工具)。但是,首先你需要确保你的系统上安装了Python和pip。使用以下命令安装pip(如果你还没有安装的话):sudoyuminst......
  • 如何修改docker容器的重启策略(重启模式)?
    如何修改docker容器的重启策略(重启模式)?使用命令进行修改:dockercontainerupdate--restart=unless-stoppedmongodb示例:执行命令:执行后成功的结果:Docker容器的重启策略Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。Docker容器的重......
  • Docker 部署 YApi 记录
    最近想在linux环境部署YApi对接口文档进行管理,只不过基于官方的部署方式,需要npm的配置,而且中间踩了很多坑比如YApi版本,Nodejs版本...... 想着还是使用Docker部署吧,找到了这位大佬的部署方式: https://www.jianshu.com/p/a97d2efb23c5基于大佬的配置,终于部署成功了......
  • Docker + Visual Studio Code IDE实现PHP Xdebug调试
    目录一、前期准备二、配置文件1.VisualStudioCodeIDE配置2、配置docker中php的xdebug.ini三、开始调试参考文档一、前期准备1、安装VSCode软件;2、在VSCode中安装PHPDebug插件;3、安装好Docker4、在容器中php中安装安装Xdebug扩展根据这个链接操作即可:X......
  • 搭建一个属于自己的docker镜像加速器
    近期国内的docker镜像加速器已经失效,导致docker镜像拉不下来。如图所示,阿里云镜像加速器已经失效了:(有人可能会问我,为什么不直接自建harbor仓库把镜像包都放在harbor上,其实这也是种方法,但是本人很不喜欢harbor私服仓库的镜像名字一长串的写法,如192.168.33.234:5000/harbor/neo4......
  • 【容器安全防线】Docker攻击方式与防范技术探究
    什么是Docker?Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。一个完整的Docker有以下几个部分组成:1、Doc......