6.2 数据卷容器
数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载。
首先,创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata:
$ docker run -itd --name dbdata -v /dbdata ubuntu:18.04
$ docker volume ls
DRIVER VOLUME NAME
local 9de99f0c06486e7bd160819254adc1e244d496cb10513c1ad46b652084afb222
$ sudo ls /var/lib/docker/volumes
9de99f0c06486e7bd160819254adc1e244d496cb10513c1ad46b652084afb222
根据上面的实验,可以发现,当使用 -v 选项只指定一个路径时,该路径指的是容器中的路径,宿主机的路径位于/var/lib/docker/volumes。
整个过程相当于:首先使用docker volume create创建一个volume,然后将volume绑定到/dbdate路径上。
当使用 -v source:destination这种明确指定源路径的写法时,则并不会创建volume。
然后,可以在其他容器中使用--volumes-from来挂载dbdata容器中的数据卷,例如创建db1和db2两个容器,并从dbdata容器挂载数据卷:
$ docker run -itd --name db1 --volumes-from dbdata ubuntu:18.04
$ docker run -itd --name db2 --volumes-from dbdata ubuntu:18.04
此时,容器db1和db2都挂载同一个数据卷到相同的/dbdata目录,三个容器任何一方在该目录下的写入,其他容器都可以看到。
Last updated
Was this helpful?