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

Docker容器内调用Python Docker Client报错:绑定源路径不存在

问题原因

你遇到的核心问题是:Docker Client是和宿主机的Docker daemon通信的,bind mount的source路径必须是宿主机上存在的路径。

你在容器内的/code目录下创建了User_Input.json,这个文件只存在于当前运行的Python容器内部,宿主机上根本没有/code/User_Input.json这个路径,所以宿主机的Docker daemon找不到它,抛出"bind source path does not exist"的错误。而本地运行脚本时,你的cwd是宿主机的真实路径,daemon能直接访问,所以一切正常。

解决方案

1. 运行Python容器时,挂载宿主机目录+Docker Socket

首先,确保运行你的Python容器时,做两个挂载:

  • 挂载宿主机的Docker Socket,让容器内的Docker Client能和宿主机daemon通信:-v /var/run/docker.sock:/var/run/docker.sock
  • 挂载一个宿主机的本地目录到容器内,用于存放需要共享给新容器的文件:比如-v $(pwd)/host-shared:/host-shared($(pwd)是宿主机当前目录,/host-shared是容器内的映射路径)

完整运行命令示例:

docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd)/host-shared:/host-shared your-python-image-name

2. 修改Python脚本的文件路径和挂载配置

把脚本中创建文件、挂载的路径都换成容器内的挂载目录(对应宿主机的真实路径),确保Docker daemon能找到:

client.images.pull(docker_image)

# 替换为容器内的挂载目录,对应宿主机的$(pwd)/host-shared
shared_dir = "/host-shared"

# 在共享目录创建User_Input.json
with open(f"{shared_dir}/User_Input.json", "w") as f:
    json.dump(user_input, f)

# 挂载共享目录到新容器的/home/hostcwd
volumes = {shared_dir: {"bind": "/home/hostcwd", "mode": "rw"}}

# 挂载文件的source用共享目录下的路径(宿主机上存在)
mounts = [
        docker.types.Mount(
            type="bind", source=f"{shared_dir}/User_Input.json", target="/User_Input.json", read_only=False
        )
    ]

container = client.containers.run(
        docker_image,
        command=None,
        volumes=volumes,
        environment=env_vars,
        mounts=mounts,
        stdin_open=True,
        stdout=True,
        stderr=True,
        remove=True,
        tty=True,
        detach=True,
    )

for line in container.logs(stream=True):
    print(line.decode("utf-8"), end="")

3. 验证逻辑

  • 运行Python容器后,脚本会在/host-shared(对应宿主机的$(pwd)/host-shared)创建User_Input.json
  • 当调用Docker Client创建新容器时,source路径指向的是宿主机的$(pwd)/host-shared/User_Input.json,daemon能正常找到这个文件,挂载成功

内容的提问来源于stack exchange,提问作者Riley Hun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:10:19