docker知识点相关笔记三

一:镜像原理

          1:什么是镜像?
                 镜像是一种轻量级,可执行的独立软件包,用来打包软件环境和基于运行环境开发的软件,
                 它包含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量和配置文件。
           2:什么是UnionFS(联合文件系统):
                       
                  特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载
                             会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。
           3:docker镜像加载原理
                  kernel:表示内核
                  
                  
                  
          4:为什么docker镜像要采用这种分层结构呢?
                  
         5:特点
               Docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。
               这一层通常被称作容器层,容器层之下的都叫做镜像层。 
        6:docker commit操作
               ⑴docker commit提交容器副本使之成为一个新的镜像
               ⑵docker commit -m "提交的描述信息" -a="作者" +容器ID +要创建的目标镜像名:[标签名]

二:Docker容器数据卷介绍

         1:什么是Docker容器数据卷
               
              
       2:如何添加数据卷
            ⑴直接命令添加
                  创建或运行容器的时候,使用-v创建一个数据卷,就是宿主机绝对路径目录
                  和容器内目录形成链接。
                  命令:docker run -it -v /宿主机绝对路径目录:/容器内目录 +镜像名
                 a:例如,我们直接执行下面的命令
                       docker run -it -v /myDataVolume:/dataVolumeContainer centos
                       注意: myDataVolume是宿主机的目录,可以不创建好,因为执行命令时
                                   会自动创建
                                   dataVolumeContainer 是镜像centos容器内部的目录,同上可以不先创建。
                       
                       
                       通过上图可以发现创建执行命令后,容器内部和主机里都生成了对应的目录。 
                  b:下面我们查看数据卷是否挂载成功
                        我们通过docker inspect +容器ID查看
                         
                         
                  c:容器和宿主机直接数据共享
                         ①首先我们进入到宿主机的数据卷目录下创建一个文件
                             
                         ②下面我们直接查看容器内的数据卷关联文件
                               
                          ③同理,如果我们在容器内修改数据卷关联目录下的文件,宿主机下的文件
                              也会同步改变,这个数据卷就实现了宿主机关联目录的数据同步问题。

                          ④注意:如果我们容器被停止了,我们对主机上的同步文件进行了修改,
                                         那么当容器重新启动之后,容器的管理目录是会自动和宿主机
                                         上的关联目录数据同步一次的。
                     d:命令(带权限)
                             docker run -it -v /myDataVolume2:/dataVolumeContainer2:ro centos
                             效果:创建出来的数据卷,宿主机上的关联文件目录是存在读写的权限
                                         的,而容器内部的文件目录是没有写的权限的,我们在宿主机上
                                         进行写的操作生成的文件数据等都是可以同步到容器内关联的目录
                                         下的,而容器内我们是没有写的权限的,无法进行创建文件,修改
                                          文件等操作。
                             ro:表示read only的含义。
             ⑵DockerFile方式添加数据卷
                   a:首先我们在根目录下创建mydocker文件夹并且进入
                         
                   b:可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷
                         
                         注释:比如我们在一个主机上创建了一个容器目录,那么当我们需要打包
                                    容器到其他机器上时,无法保证其他机器上也有这个与容器关联的
                                    宿主机目录,所以可移植行不好,我们无使用上面那种命令方式。
                    c:file构建,创建Dockerfile文件
                           
                    d:build后生成镜像
                            命令:docker build -f +Dockerfile文件路径  -t +名称:版本,如果是当前目录,
                                       就是docker build -t +名称:版本 .
                                        
                                         
                                        那么只要我们运行刚创建的容器,它就会自动给我们创建两个数据卷
                                        dataVolumeContainer和dataVolumeContainer2
                       e:运行生成的容器卷
                               
                               我们在容器内的文件夹中创建一个文件test.txt
                                
                            那么现在容器内部已经生成了容器卷,宿主机会不会自动生成呢?
                           
                               
                             我们查看一下刚刚在容器内dataVolumeContainer目录中创建的test1.txt在宿主机对应的
                            目录中有没有:
                             


                          
                          
     上一篇:docker知识点相关笔记二

      文章目录                       
                        

猜你喜欢

转载自blog.csdn.net/K_520_W/article/details/83512468