【问题标题】:Trying to understand VOLUME command in dockerfile and its directories试图理解 dockerfile 及其目录中的 VOLUME 命令
【发布时间】:2019-05-07 07:13:08
【问题描述】:

我最近才开始在本地计算机上使用 windows 使用 docker,我正处于尝试了解音量的阶段。 据我了解,在命令行中,您可以简单地通过添加命令将本地目录连接到容器目录:

-v [host location]:[container location]

当使用 dockerfile 时,你指定容器目录:

VOLUME [container location]

所以当它运行时使用

docker volume ls

我可以看到在我的计算机上创建的卷

DRIVER              VOLUME NAME
local               3d25e0608d5500c4dba29f8c3bc7b5ba4d5348e6fbd54644a20a5701f0b9f427

我的问题是我试图了解此卷在我的计算机上的什么位置?

使用检查给我这个结果:

[
    {
        "CreatedAt": "2019-05-01T13:47:41Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/3d25e0608d5500c4dba29f8c3bc7b5ba4d5348e6fbd54644a20a5701f0b9f427/_data",
        "Name": "3d25e0608d5500c4dba29f8c3bc7b5ba4d5348e6fbd54644a20a5701f0b9f427",
        "Options": null,
        "Scope": "local"
    }
]

我不明白“/var/lib/docker/volumes/...”到底是哪里。 它在 docker 使用的虚拟 linux 驱动器上吗?

【问题讨论】:

  • 对于 Windows 和 Mac 的 Docker,是的,/var/lib/docker 是 Docker 运行的嵌入式 VM 的一部分,而不是在主机 /var/lib/docker 目录中。

标签: docker containers dockerfile


【解决方案1】:

您不应该能够直接访问 Docker 命名卷(或存在于 /var/lib/docker 中的任何其他内容)。例如,backup and restore for named volumes 上的官方 Docker 示例会启动安装相同卷的附加容器以进行基本数据管理操作。

如果您需要直接访问卷中的数据,使用主机目录绑定挂载可能是最简单的选择。

您应该避免在 Dockerfile 中写入 VOLUME 指令。您不需要它来使用docker run -v 将目录挂载到容器中;它的主要作用是自动为您添加一个-v 选项(如果您还没有)。在实践中,您不会得到任何好处,并且会遭受一些令人困惑的副作用(值得注意的是,RUN 步骤不会在VOLUME 目录中进行持久更改)。

您在docker volume ls 中看到的匿名卷可能是您的VOLUME 指令的结果。

【讨论】:

    猜你喜欢
    • 2018-09-12
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多