•数据卷存在于宿主机的文件系统中,独立于容器,和容器的生命周期是分离的。 •数据卷可以目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换。 •容器启动初始化时,如果容器使用的镜像包含了数据,这些数据会拷贝到数据卷中。 •容器对数据卷的修改是实时进行的。 •数据卷的变化不会影响镜像的更新。数据卷是独立于联合文件系统,镜像是基于联合文件系统。镜像与数据卷之间不会有相互影响。

Docker挂载容器数据卷的三种方式

bind mounts:将宿主机上的一个文件或目录被挂载到容器上。 volumes:由Docker创建和管理。使用docker volume命令管理 tmpfs mounts:tmpfs 是一种基于内存的临时文件系统。tmpfs mounts 数据不会存储在磁盘上。

数据卷 - 图1

bind mounts方式挂载数据卷

  1. 利用docker run/create的参数为容器挂载数据卷
  2. 用法:
  3. 方式一: -v, --volume参数
  4. -v 宿主机文件或文件夹路径:容器中的文件或者文件夹路径
  5. 方式二:--mount参数
  6. --mount type=bind, src=宿主机文件或文件夹路径, dst=容器中的文件或者文件夹路径
  7. 注意:src指定的文件和路径必须提前创建或存在

数据卷 - 图2

volumes方式挂载数据卷

  1. 利用docker run/create为容器挂载数据卷
  2. 用法:
  3. 方式一: -v, --volume参数
  4. -v VOLUME-NAME:容器中的文件或者文件夹路径
  5. 方式二:--mount 参数
  6. --mount type=volume, src=VOLUME-NAME, dst=容器中的文件或者文件夹路径
  7. volume对象管理:
  8. docker volume 命令管理volume数据卷对象
  9. docker volume create 创建数据卷对象
  10. docker volume inspect 查看数据卷详细信息
  11. docker volume ls 查看已创建的数据卷对象
  12. docker volume prune 删除未被使用的数据卷对象
  13. docker volume rm 删除一个或多个数据卷对象

tmpfs mount方式挂载数据卷

  1. 利用docker run/create为容器挂载数据卷
  2. 用法:
  3. --mount type=tmpfs, dst=PATH

共享其他容器的数据卷-数据卷容器

  1. 利用docker run/create 的--volumes-from参数指定数据卷容器
  2. 用法:
  3. docker run/create --volumes-from CONTAINER
Docker的数据卷更多会是使用volumes方式来进行使用。使用时需注意: •如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。 •如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。 这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。