【问题标题】:Trying to bind volume to a docker container尝试将卷绑定到 docker 容器
【发布时间】:2019-12-21 18:24:48
【问题描述】:

我正在尝试将卷挂载到 docker 容器,但我遇到了一些问题。我在 docker 容器中有一个简单的 python 脚本,它创建文件“links.json”,我想从文件系统访问这个文件。

这是我的 Dockerfile:

FROM python:3.6-slim

COPY . /srv/app
WORKDIR /srv/app

RUN pip install -r requirements.txt --src /usr/local/src

CMD [ "python", "main.py" ]

我已经创建了卷:

docker volume create my-data

我正在使用命令运行这个容器:

docker run --mount source=my-data,target=/srv/app 3743b8d3b043

我在 MacOS 上试过了。

当我写:docker volume inspect my-data时,我得到了这个结果:

[
    {
        "CreatedAt": "2019-08-15T08:30:48Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/my-data/_data",
        "Name": "my-data",
        "Options": {},
        "Scope": "local"
    }
]

但是像/var/lib/docker/volumes这样的所有目录,以及这段代码的目录都是空的..你有什么想法问题出在哪里吗?

非常感谢!

【问题讨论】:

    标签: python docker dockerfile docker-volume


    【解决方案1】:

    您正在覆盖您在build 过程中添加的/srv/app 中的所有数据。您可以更改您的mount 以使用其他目标作为/srv/app。

    更新

    使用以下方法启动您的容器:

    docker run -v /ful/path/folder:/srv/app/data IMAGE
    

    【讨论】:

    • 谢谢,这很好。我试图将我的links.json 文件写入/srv/app/data,再次构建容器并运行docker run --mount source=my-data,target=/srv/app/data 96c79f28f40d.. 但是目录/var/lib/docker/volumes/my-data/_data 仍然是空的.. 实际上目录/var/lib/docker不存在。不会有问题吗?
    • 我认为你在 Windows 上?
    • 不,我使用的是 MacOS
    • 好的,在 WIndows 和 mac docker startet 中的 VM 中,路径 /var/lib/docker/volumes/ 在您的 VM 中,而不是在 host 中。我建议你使用-v /ful/path/folder:/srv/app/data而不是mount
    猜你喜欢
    • 2016-07-27
    • 2021-11-27
    • 1970-01-01
    • 2019-12-13
    • 2014-11-20
    • 2018-12-04
    • 2021-03-16
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多