概念

  • 卷就是目录或者文件,存在于一个或者多个容器中,由 docker 挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System 提供一些用于持续存储或者共享数据的特性
  • 目的是将数据持久化,完全独立于容器的生存周期,将 docker 容器内的数据保存进宿主机的磁盘中,因此 docker 不会再容器删除时删除其挂载的数据卷
  • 类似于 redis 的 AOF、RDB文件实现持久化


特点

  • 数据卷可在容器之间共享或者重用数据
  • 卷中的更改可以直接实时生效(主机上的更改同步到容器中、容器的更改同步到主机中、容器挂掉主机上的更改也会同步到容器中
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止


操作

含义 命令
运行一个带有数据卷的实例 docker run -it --name="persistent_ubuntu" --privileged=true -v /tmp/host_data:/tmp/docker_data ubuntu
查看数据卷是否挂载成功 docker inspect 容器ID

alt



读写规则

含义 命令
默认情况下是读写 rw docker run -it --name="persistent_ubuntu" --privileged=true -v /tmp/host_data:/tmp/docker_data:rw ubuntu
主机可读可写,容器内部限制,容器内只能读不能写 ro(read only) docker run -it --name="persistent_ubuntu" --privileged=true -v /tmp/host_data:/tmp/docker_data:ro ubuntu


容器卷之间的继承

  • 继承的是挂载的规则(目录)、两个容器之间相互独立,父容器挂掉也不会影响子容器
  • 两个容器共享一个挂载目录
含义 命令
继承已有映射 docker run -it --privileged=true --volumes-from persistent_ubuntu --name="inherit_presistent_ubuntu" ubuntu