在 Docker Desktop (Windows) 中定位数据卷

新手上路,请多包涵

我目前正在尝试学习 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 许可协议

阅读 1.6k
2 个回答

您的卷目录是 /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 是容器内的位置,在以下输出中:

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


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

我的主要好奇心是分享图像等很棒,但我如何分享我的数据?

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

  • 将 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 by db1 will persist in the volume of container dbstore .

有关更多信息,您可以参考 官方 Docker 卷文档

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

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

不。Docker 映像 是您可以推送到 Docker 中心(又名“注册表”)的东西;但数据不是。您可以使用任何您喜欢的方法备份/保存/共享您的数据,但是将数据推送到 Docker 注册表以共享它没有任何意义。

我可以做备份等吗?

是的,正如上面发布的:-)

原文由 shizhz 发布,翻译遵循 CC BY-SA 4.0 许可协议

我是 Windows + WSL 2 (Ubuntu 18.04)。

在 Windows 文件资源管理器中输入:

  • 对于 Docker 版本 20.10.+: \\wsl$\docker-desktop-data\data\docker\volumes
  • 对于 Docker 引擎 v19.03: \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\

每个卷都有一个目录。

原文由 mpc-DT 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题