我们可以在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?
/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装入文件夹中的数据有何不同?
这是因为,如“ 将主机目录装载为数据卷 ”中所述
主机目录从本质上说是依赖于主机的。因此,您不能从Dockerfile挂载主机目录,因为构建的映像应该是可移植的。主机目录并非在所有潜在主机上都可用。 如果您有一些持久性数据要在容器之间共享,或者要从非持久性容器中使用,则最好创建一个命名的数据卷容器,然后从中装入数据。
主机目录从本质上说是依赖于主机的。因此,您不能从Dockerfile挂载主机目录,因为构建的映像应该是可移植的。主机目录并非在所有潜在主机上都可用。
如果您有一些持久性数据要在容器之间共享,或者要从非持久性容器中使用,则最好创建一个命名的数据卷容器,然后从中装入数据。
您可以将两种方法结合使用:
docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
在这里,我们启动了一个新容器,并从该dbdata容器装入了卷。 然后,我们将本地主机目录挂载为/backup。 最后,我们传递了一个命令,该命令用于tar将dbdata卷的内容备份到目录backup.tar内的/backup文件中。当命令完成并且容器停止时,我们将获得dbdata卷的备份。
在这里,我们启动了一个新容器,并从该dbdata容器装入了卷。 然后,我们将本地主机目录挂载为/backup。
dbdata
/backup
最后,我们传递了一个命令,该命令用于tar将dbdata卷的内容备份到目录backup.tar内的/backup文件中。当命令完成并且容器停止时,我们将获得dbdata卷的备份。
tar
backup.tar