Docker学习(二)

一、Docker容器数据卷

是什么

    一句话:有点类似我们Redis里面的rdb和aof文件。

    先来看看Docker的理念:

        *  将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的

        *  容器之间希望有可能共享数据

    Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。

    为了能保存数据在docker中我们使用卷。

能干嘛

    容器的持久化。

    容器间继承+共享数据。

特点

    1:数据卷可在容器之间共享或重用数据

    2:卷中的更改可以直接生效

    3:数据卷中的更改不会包含在镜像的更新中

    4:数据卷的生命周期一直持续到没有容器使用它为止

数据卷

    容器内添加

        直接命令添加: docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名。

        查看数据卷是否挂载成功:docker inspect 容器ID。

宿主机和容器的文件绑定关系

        挂载成功后,容器和宿主机之间数据共享。

        如果要限制容器在共享文件的写权限,可以使用一下命令:

             docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名。ro代表readonly。

    DockerFile添加

       1、根目录下新建mydocker文件夹并进入。

       2、可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷,File构:

# volume testFROM centos

VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]

CMD echo "finished,----success1"

CMD /bin/bash


       3、build指令将DockFile生成镜像。

docker build -f /mydocker/dockerFile -t plz/centos .

注意最后有一个.不能省略,代表使用当前路径dockerFile进行构建

        4、build指令运行后,获得一个新镜像plz/centos。

        5、运行新生成的镜像,使用docker inspect 容器Id 命令查看宿主机和容器的文件共享关系。

dockerFile生成的镜像数据卷信息

二、数据卷容器

是什么

    命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。

演示

    1、新建一个父容器,以plz/centos镜像为例:

        docker run -it --name dc01 plz/centos

    2、在dc01容器中dataVolumeContainer1目录下新建dc01_add.txt文件。

    3、创建dc02、dc03子容器,继承自dc01

        docker run -it --name dc02 --volumes-from dc01 plz/centos

        docker run -it --name dc03 --volumes-from dc01 plz/centos

    4、通过查看子容器的dataVolumeContainer1目录下的文件可以看到目录下存在dc01_add.txt文件。

总结:

    dc02/dc03分别在dataVolumeContainer1各自新增内容

    回到dc01可以看到02/03各自添加的都能共享了

    删除dc01,dc02修改后dc03可否访问——是

    删除dc02后dc03可否访问——是

    结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。

你可能感兴趣的:(Docker学习(二))