容器与外部的数据共享是通过数据卷实现的
数据卷概念
是容器与外部在文件系统上的通道,可以和主机的文件系统建立联系,也可以和其他容器建立文件级的联系
容器把希望对外的数据写入自己的数据卷,其他容器就可以加载这个数据卷,操作其中的数据了
数据卷可以指定目录和文件,但实际操作中经常使用目录,所以数据卷可以大概理解为一个挂载目录,可以和挂载主机目录,也可以被其他容器挂载,这样就实现了容器和主机之间、容器和容器之间的数据共享问题
数据共享两种形式
(1)挂载一个主机目录作为数据卷
挂载一个本地已有目录到容器中作为数据卷
$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp
-v 指定创建一个数据卷
/src/webapp:/opt/webapp 冒号前是主机目录,冒号后是容器内目录
(2)容器间共享数据卷
容器A创建了数据卷
$ sudo docker run -it -v /dbdata --name dbdata ubuntu
容器B引用容器A的数据卷
使用参数 --volumes-from 来挂载dbdata容器中的数据卷
$ sudo docker run -it --volumes-from dbdata --name db1 ubuntu
任何一方在该目录下的写入,其他容器都可以看到
可以多次使用--volumes-from参数来从多个容器挂载多个数据卷。还可以从其他已经挂载了容器卷的容器来挂载数据卷
$ sudo docker run -d --name db2 --volumes-from db1 ubuntu