docker数据卷vs挂载的主机目录

在docker中我们可以有一个数据量:

$ docker run -v /path/to/data/in/container --name test_container debian $ docker inspect test_container ... Mounts": [ { "Name": "fac362...80535", "Source": "/var/lib/docker/volumes/fac362...80535/_data", "Destination": "/path/to/data/in/container", "Driver": "local", "Mode": "", "RW": true } ] ... 

但是,如果数据卷位于/var/lib/docker/volumes/fac362...80535/_data ,是否与使用-v /path/to/data/in/container:/home/user/a_good_place_to_have_data装入文件夹中的数据有什么不同-v /path/to/data/in/container:/home/user/a_good_place_to_have_data

与使用-v / path / to / data / in / container:/ home / user / a_good_place_to_have_data挂载文件夹中的数据有什么不同?

这是因为,正如“ 将主机目录挂载为数据卷 ”

主机目录本质上取决于主机。 因为这个原因,你不能从Dockerfile挂载主机目录,因为build立的映像应该是可移植的。 主机目录在所有可能的主机上都不可用。

如果您想要在容器之间共享某些持久性数据,或者想要使用非持久性容器,则最好创build一个名为“数据容量容器”,然后从中装入数据。

你可以把两种方法结合起来

  docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata 

在这里,我们已经启动了一个新的容器,并从dbdata容器中安装了卷。
然后,我们将本地主机目录挂载为/backup
最后,我们传递了一个命令,使用tardbdata卷的内容备份到我们的/backup目录下的backup.tar文件中。 当命令完成并且容器停止时,我们将留下dbdata卷的备份。