docker数据卷容器以及Dockerfile学习

  1. 什么叫做数据卷容器?
     命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,
     称之为数据卷容器 。
  2. 下面我们基于之前创建的镜像kgf/centos去创建3个容器,名称分别为dc01,dc02和dc03,这三个
     容器的关系是dc02和dc03都继承与dc01,下面我们通过实例操作试一下。
      ⑴创建dc01的容器,命令:docker run -it --name dc01 kgf/centos
          
          上面的dataVolumeContainer2和dataVolumeContainer目录是之前创建kgf/centos镜像
           时建立的据数卷。那么现在我们在dataVolumeContainer2中创建一个文件。
           
      ⑵创建dc01的容器,继承dc01容器
          命令:docker run -it --name dc02 --volumes-from dc01 kgf/centos
            
     ⑶创建dc03的容器,继承dc01容器
          命令:docker run -it --name dc03 --volumes-from dc01 kgf/centos
          
     ⑷下面我们分别查看dc01,dc02中的数据卷情况。
          
          通过上面我们可以发现,我们创建的dc01,dc02和dc03它们之间的关联数据卷中的
          数据是可以数据共享的,不管是哪个容器的数据发成了变化,那么其它的两个容器
          的数据也将会发生同样的改变。
  3. 那么基于上面我们创建的dc01,dc02和dc033个容器,如果我们将dc01删除掉,再去
    修改dc02,那么dc03会不会发生数据同步呢?能不能获取到dc02修改后的数据呢?
    ⑴首先删除掉dc01容器
          
        
        由上图可以发现我们删除了dc01这个父容器后,对dc02和dc03的文件没有产生
        影响,文件都还存在。
    ⑵我们在dc02上新增一个文件试试
         
    ⑶结论:
         容器之间的配置信息的传递,数据卷的生命周期一直会持续到没有容器为止。
          这就叫做容器卷传递共享(--volumes-from)
          
  4. 什么是Dockerfile?
     Dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本。
  5. 构建Dockerfile的三步骤:
     a:编写Dockerfile文件
     b:docker build去执行文件
     c:docker run去运行生产的镜像
  6. Dockerfile的构建过程解析
     ⑴DockerFile内容基础知识
          a:每条保留字指令都必须为大写字母且后面要跟随至少一个参数
          b:指令按照从上到下,顺序执行
          c:#表示注释
          d:每条指令都会创建一个新的镜像层,并对镜像进行提交
     ⑵Docker执行Dockerfile的大致流程
          a:dcoker从基础镜像运行一个容器
          b:执行一条指令并对容器做出修改
          c:执行类似docker commit的操作提交一个新的镜像层
          d:docker再基于刚提交的镜像运行一个新容器
          e:执行dockerfile中的下一条指令直到所有指令都执行完成
     ⑶dockerfile的体系结构(保留字指令)
          ①FROM:表示基础镜像,当前新镜像是基于哪个镜像的。
                 例如:FROM tomcat  -----》就是基于tomcat作为基础镜像的
          ②MAINTAINER:表示镜像维护者的姓名和邮箱地址    
                 例如:MAINTAINER The Centos Project <cloud-ops@centos.org>
          ③RUN:表示容器构建时需要运行的命令
          ④EXPOSE:表示构建的容器启动后对外暴露的端口号
                 例如:EXPOSE 6379
          ⑤WORKDIR:表示指定在容器创建后,终端默认登录进来的工作目录,一个落脚点      
                 例如:WORKDIR /data   表示当我们进入容器后默认就在/data这个目录下
          ⑥ENV:用来在构建镜像过程中设置环境变量
                 例如:ENV MY_PATH /usr/mytest   表示我们设置一个环境变量名称为MY_PATH,
                            值为/usr/mytest,那么我们后面就可以引用这个环境变量。比如我们在设置
                            落脚点的时候,WORKDIR $MY_PATH,那么登录进来后直接就是在/usr/mytest
                            目录下。
          ⑦ADD: 将宿主机目录下的文件拷贝进镜像并且ADD命令会自动处理URL和解压tar压缩包     
                 例如:ADD centos-7-docker.tar.xz /
          ⑧COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录
                           复制到新的一层镜像内的<目标路径>位置。
                 例如:COPY src dest 或者 COPY ["src","dest"]
          ⑨VOLUME:容器数据卷,用于数据保存和持久化工作
          ⑩CMD:
                  a:表示指定一个容器启动时要运行的命令
                        
                  b:Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后
                        的参数替代。
          ENTRYPOINT:表示指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,
                                     都是在指定容器启动程序及参数。
          ONBUILD:表示当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的
                              onbuild被触发。
  7. 基于上面保留字的案例
     ⑴Base镜像(scratch)
           Docker Hub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的。
     ⑵自定义镜像mycentos
           ①我们现在可以看看我们从网上下载下载的centos镜像原本是什么样子的
                 
           ②下面我们编写我们的Dockerfile文件
                 a:在/tmp/mydocker目录下创建Dockerfile文件
                      
                b:编写文件内容
                     
               c:使用dockerfile文件构建新的镜像
                    命令:docker build -f /tmp/mydocker/Dockerfile -t mycentos:1.1 .
                    
                    
              d:下面我们运行新建的镜像
                     命令:docker run -it mycentos:1.1
                     
                     
                      
               e:使用docker history +镜像ID 查看镜像详细信息
                    
  8. ONBUILD命令案例
      ⑴简介
           当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后,父镜像的onbuild被触发。
       ⑵简单案例:
              
            
















       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值