七、Docker学习之Docker存储卷

概述

  Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。
  如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本隐藏,此即“写时复制(COW)”机制。
  关闭并重启容器,其数据不受影响;但删除Docker容器,其更改将会全部丢失。

  卷:是容器上的一个或多个目录,此类目录可与宿主机的目录绑定关联。

Docker卷

  Docker有两种类型的卷,每种类型都在容器中存在一个挂载点,但其在宿主机上的位置有所不同。

  • Bind mount volume 绑定挂载卷:用户指定在宿主机和docker容器内的目录绑定
      docker run --name b2 -it --rm -v /var/lib/docker/volumes/b2:/data busybox #docker绑定挂载卷,如果要挂载多个卷,则写多个-v 宿主机目录:docker容器目录
    七、Docker学习之Docker存储卷_第1张图片
      docker inspect -f {{.Mounts}} b2 #查看指定信息,外面一层大括号是为格式,里面大括号表示一个json
    七、Docker学习之Docker存储卷_第2张图片

  • Docker-managed volume docker管理卷:docker自动管理与宿主机目录的绑定,不管在容器内目录还是宿主机目录新建文件,双方都共享。
      docker run -it -name b2 -v /data busybox #将容器内/data目录挂载在宿主机
    在这里插入图片描述
      docker inspect b2 #查看docker容器信息
    七、Docker学习之Docker存储卷_第3张图片

  • 共享卷:复制容器的卷设置
    先开启一个容器,并指定绑定卷
    docker run --name b2 -it -v /var/lib/docker/volumes/b2:/data busybox
    ​ 再开启第二个容器,复制b2的卷设置
    docker run --name b1 -it --volumes-from b2 busybox #--volumes-from 后面直接跟容器名
    形成宿主机与容器b1、b2之间的卷目录内容互通
    当一个容器添加多个卷时, -v 写多个

你可能感兴趣的:(docker,docker)