You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Docker Python API正确挂载卷以同步生成文件?

问题分析与修正方案

你使用Docker Python API的create_container方法时,卷挂载的配置逻辑有误,导致文件无法同步到本地。以下是具体问题和解决方法:

核心问题

create_container中的volumes参数仅用于声明容器内需要挂载的路径,而宿主机与容器的路径映射关系,需要通过host_config的binds参数来指定——这才对应docker run -v的映射逻辑。你之前的代码把宿主机路径也放进了volumes列表,这是错误的用法。

修正方案

方案1:修正create_container的配置

container = client.create_container(
    image='demo',
    stdin_open=True,
    tty=False,
    # 明确指定输出路径为挂载的容器目录,避免因工作目录差异导致文件生成到非挂载区
    command="python3 /quantum-demo/circuit.py --res='/quantum-demo/'",
    volumes=['/quantum-demo/'],  # 仅声明容器内的挂载目标路径
    detach=True,
    host_config=client.create_host_config(
        # 配置宿主机与容器的路径映射,格式与docker run -v完全一致
        binds=['/Users/gowthamkrishnaaddluri/Documents/dfki_sse/demo:/quantum-demo/']
    )
)
client.start(container=container.get('Id'))

方案2:使用更简洁的containers.run(推荐)

create_container是较旧的API方法,Docker官方更推荐使用containers.run,它的参数逻辑和docker run更一致,更易读且不易出错:

client.containers.run(
    image='demo',
    command="python3 /quantum-demo/circuit.py --res='/quantum-demo/'",
    # 直接通过字典配置卷映射,键为宿主机路径,值指定容器绑定路径和读写权限
    volumes={
        '/Users/gowthamkrishnaaddluri/Documents/dfki_sse/demo': {
            'bind': '/quantum-demo/',
            'mode': 'rw'  # 读写模式,默认即为rw,可省略
        }
    },
    detach=True,
    stdin_open=True
)

额外注意事项

  • 确保宿主机目录/Users/gowthamkrishnaaddluri/Documents/dfki_sse/demo已存在,Docker不会自动创建不存在的宿主机绑定目录。
  • 检查容器内运行脚本的用户是否拥有/quantum-demo/目录的读写权限,如果脚本以非root用户运行,可能需要调整宿主机目录的权限,或在Dockerfile中配置合适的用户权限。

内容的提问来源于stack exchange,提问作者gowtham krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:15:32