【问题标题】:Docker inside docker : volume is mounted, but emptydocker内部的Docker:卷已安装,但为空
【发布时间】:2018-06-21 22:54:24
【问题描述】:

我正在运行一个 docker 容器,里面安装了 docker:

docker run -v /Path/to/service:/src/service -v /var/run/docker.sock:/var/run/docker.sock --net=host image-name python run.py

这将运行一个 python 脚本,该脚本在 /src 中创建一个 data 文件夹并填充它。打印os.listdir('/src/data') 时,我得到一个文件列表。

然后我从这个容器中运行一个容器,安装 data 文件夹,使用 docker-py

volumes = {'/src/data': {'bind': '/src', 'mode': 'rw'}}    
client.containers.run(image, command='ls data', name=container_key, network='host', volumes=volumes)

它会打印出来:

Starting with UID: 0 and HOME: /src\n0\n'

这意味着data 已安装,但为空。我做错了什么?

【问题讨论】:

    标签: docker dockerpy


    【解决方案1】:

    在容器内安装 docker 意味着从那里启动的容器正在您的主机上运行。

    最终结果是您在主机上有两个容器 - 一个带有 /Path/to/service:/src/service 和一个 /src/data:/src

    如果你想在两个容器之间共享一个卷,你通常应该使用一个“命名”卷,比如 docker run -v sharedvolume:/src/datadocker run -v sharedvolume:/src

    【讨论】:

    • 这拯救了我的一天。非常感谢?。也感谢 OP 提出这个问题
    猜你喜欢
    • 2023-03-12
    • 2016-03-25
    • 2018-11-28
    • 2018-02-14
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 2016-11-20
    • 2015-11-15
    相关资源
    最近更新 更多