数据卷概念

  • 数据卷是宿主机中的一个目录或文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立刻同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以被挂载多个数据卷

数据卷作用

  • 容器数据持久化(mysql等)
  • 外部机器和容器间接通信
  • 容器之间数据交换

图左:容器与宿主机上的某一目录或文件进行挂载  -v   于是容器中和宿主机之间通过挂载的数据卷进行通信,实现了容器数据的持久化和外部机器和容器之间的通信。

图右:我们也可以使用多个容器,与宿主机的同一个数据卷(文件或目录)进行挂载。这样我们就间接实现了容器之间的数据交换和通信了

docker容器数据卷具名挂载和匿名挂载区别_centos

 启动容器时,使用 -v 参数设置数据卷

docker run ... -v 宿主机目录(文件):容器内目录(文件) ...

注意事项:

  1. 目录必须是绝对路径
  2. 如果目录不存在,会自动创建
  3. 可以挂载多个数据卷

数据卷容器概念

有了上面数据卷的概念,我们再设想一下若数据卷数量过多的情况下,我们如何进行管理?总不能每一个都连接在宿主机上配置一个数据卷。数量一旦上去,这样操作起来很麻烦。所以有了管理数据卷的数据卷容器概念

数据卷容器操作

我们现创建c3容器为数据卷,将c1 c2 容器挂载到c3上

步骤为:

创建一个容器,挂载到宿主机上(-v /volume,左边没有宿主机的路径,会自动分配)

并让其他容器继承自该容器( --volumes-from 数据卷容器)

创建启动c3数据卷容器,使用-v 参数设置数据卷

docker run -it --name=c3 -v /volume

创建启动c1c2容器,使用--volumes-from参数 设置数据卷

docker run -it --name=c1 --volumes-from c3

docker run -it --name=c2 --volumes-from c3

docker容器数据卷具名挂载和匿名挂载区别_docker_02

 数据卷容器像一个集线器,将所有需要连接的容器通过他连接到宿主机的数据卷上,虽然什么也没做,但使得整体结构更加清晰。注意的是:即使c3挂掉了,c1 c2也可以正常进行通信,因为已经和宿主机数据卷连接了