一尘不染

在Docker Desktop(Windows)中查找数据卷

docker

目前,我正在尝试学习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"
    }
]

谁能帮我?我只想知道我的数据量实际存在于何处?如果是这样,我该怎么走呢?


阅读 766

收藏
2020-06-17

共1个答案

一尘不染

你卷目录 /var/lib/docker/volumes/blog_postgres-data/_data,
and /var/lib/docker 通常安装在
C:\Users\Public\Documents\Hyper-V\Virtual hard disks. 论如何,您可以
通过查看Docker设置来进行检查。

您可以参考 these docs for info on how to share drives with Docker on
Windows.

BTW, Source 是主机Destination上的位置
,也是以下输出中容器内部的位置:

"Mounts": [
{
    "Name": "fac362...80535",
    "Source": "/var/lib/docker/volumes/fac362...80535/_data",
    "Destination": "/webapp",
    "Driver": "local",
    "Mode": "",
    "RW": true,
    "Propagation": ""
}
]

===========================================================================

更新以回答评论中的问题:

My main curiosity here is that sharing images etc is great but how do I
share my data?

实际上 volume是为此目的而设计的(在Docker容器中管理数据)。卷中的数据保留在主机FS上,并与
Docker容器/映像的生命周期隔离。您可以通过以下方式批量共享数据:

  • 挂载Docker卷以托管和重用它

docker run -v /path/on/host:/path/inside/container image

然后,所有数据将保留在其中 /path/on/host;您可以备份它,将其复制到另一台计算机上,然后以相同的体积重新运行容器。

  • 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.

有关更多信息,您可以参考 official Docker volumes
docs
.

简而言之,volumes它只是主机上包含所有
容器数据的目录,因此您可以使用以前使用的任何方法来备份/共享
数据。

我可以像处理图像一样将卷推送到docker-hub吗?

否。您可以将Docker 映像推送到Docker集线器(又称
“注册表”)。但是数据不是。您可以使用
任何喜欢的方法来备份/持久保存/共享数据,但是将数据推送到Docker注册表以共享它没有
任何意义。

我可以进行备份等吗?

是的,如上所述:-)

2020-06-17