我目前正在尝试学习 docker,但我对数据量实际存在的位置感到困惑。
我正在使用 Docker Desktop for Windows 。 (视窗 10)
在文档中,他们说在对象上运行 docker inspect 会给你来源: https ://docs.docker.com/engine/tutorials/dockervolumes/#locating-a-volume
$ docker inspect web
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
但是我没有看到这一点,我得到以下信息:
$ docker inspect blog_postgres-data
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/blog_postgres-data/_data",
"Name": "blog_postgres-data",
"Options": {},
"Scope": "local"
}
]
谁能帮我?我只想知道我的数据量实际存在于我的主机上吗?如果是这样,我怎样才能得到它的路径?
原文由 Brad 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的卷目录是
/var/lib/docker/volumes/blog_postgres-data/_data
和/var/lib/docker
通常安装在C:\Users\Public\Documents\Hyper-V\Virtual hard disks
中。无论如何,您可以通过查看 Docker 设置来检查它。您可以参考 这些文档 以获取有关如何在 Windows 上与 Docker 共享驱动器的信息。
顺便说一句,
Source
是主机上的位置,而Destination
是容器内的位置,在以下输出中:更新以回答评论中的问题:
实际上
volume
就是为此目的而设计的(管理Docker容器中的数据)。卷中的数据持久保存在主机 FS 上,并与 Docker 容器/映像的生命周期隔离。您可以通过以下方式在卷中共享数据:docker run -v /path/on/host:/path/inside/container image
然后您的所有数据都将保留在
/path/on/host
中;您可以备份它,将其复制到另一台机器,然后使用相同的卷重新运行您的容器。创建数据容器:
docker create -v /dbdata --name dbstore training/postgres /bin/true
Run other containers based on this container using
--volumes-from
:docker run -d --volumes-from dbstore --name db1 training/postgres
, then all data generated bydb1
will persist in the volume of containerdbstore
.有关更多信息,您可以参考 官方 Docker 卷文档。
简单来说,
volumes
只是您主机上的一个目录,其中包含您所有的容器数据,因此您可以使用之前使用的任何方法来备份/共享您的数据。不。Docker 映像 是您可以推送到 Docker 中心(又名“注册表”)的东西;但数据不是。您可以使用任何您喜欢的方法备份/保存/共享您的数据,但是将数据推送到 Docker 注册表以共享它没有任何意义。
是的,正如上面发布的:-)