我正在学习docker,我对数据卷实际存在的地方感到困惑。
我正在使用Windows的Docker Desktop。(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"
}
]
有人能帮帮我吗?我只想知道我的数据量在哪里是在主机上吗?如果是这样,我怎么能得到它的路径?
卷目录为/var/lib/docker/volumes/blog_postgres-data/_data, /var/lib/docker通常挂载在C:\Users\Public\Documents\Hyper-V\Virtual硬盘。不管怎样,你可以在Docker设置中找到它。
你可以参考这些文档,了解如何在Windows上使用Docker共享驱动器。
顺便说一下,Source是主机上的位置,Destination是下面输出中的容器内的位置:
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
更新以回答评论中的问题:
我在这里主要的好奇心是,共享图像等是伟大的,但我如何共享我的数据?
实际上卷就是为这个目的设计的(在Docker容器中管理数据)。卷中的数据持久化在主机FS上,并与Docker容器/映像的生命周期隔离。您可以通过以下方式共享卷中的数据:
Mount Docker volume to host and reuse it
docker run -v /path/on/host:/path/inside/container image
Then all your data will persist in /path/on/host; you could back it up, copy it to another machine, and re-run your container with the same volume.
Create and mount a data container.
Create a data container: 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 by db1 will persist in the volume of container dbstore.
要了解更多信息,您可以参考Docker volumes官方文档。
简单地说,volumes只是主机上的一个目录,其中包含所有容器数据,因此您可以使用以前使用的任何方法来备份/共享数据。
我可以像处理图像一样将卷推送到docker-hub吗?
不。Docker映像是你可以推送到Docker中心(也就是Docker hub)的东西。“注册表”);但数据并非如此。你可以用任何你喜欢的方法备份/持久化/共享你的数据,但是将数据推送到Docker注册表来共享它没有任何意义。
我可以做备份吗?
是的,如上所述:-)