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
。
最后,我们传递了一个命令,使用tar
将dbdata
卷的内容备份到我们的/backup
目录下的backup.tar
文件中。 当命令完成并且容器停止时,我们将留下dbdata
卷的备份。