首页 > 解决方案 > 从 python 调用 docker

问题描述

我对 docker 很陌生,所以我很困惑。

    a= 'o1 & o2 | -o3'
    p=subprocess.Popen("docker run -ti ajaveeda/satisker:first /data/satisolve '{} ".format(a + " ' "),shell=True, stdout=subprocess.PIPE, stderr=sys.stderr)
    output, err = p.communicate()
    output = output.decode('utf-8')
    print(output)

我在我的 Windows 10 计算机上安装了一个 docker 工具箱。当我输入 时"docker run -ti ajaveeda/satisker:first /data/satisolve "o1 & o2 | -o3" ",docker 给我“满意的解决方案:o1 = True, o2 = False, o3 = False”作为输出。通过使用上面给出的代码片段,我想从 python 代码中调用 docker 并打印输出。但是,当我使用代码片段时,我得到

io.UnsupportedOperation: 文件号

错误。我该如何解决这个问题?

标签: dockerdocker-toolbox

解决方案


当您使用 python 运行子进程时,它会创建一个子进程并将命令传递给它。因此,当您运行 docker run 命令时,它会创建一个容器实例并允许您在容器内运行命令。
当您运行docker run时,它会创建一个容器并保留在容器内。
docker run --rm在你的 python 代码
中,一旦命令执行,这将退出容器。请检查引号格式一次subprocess.Popen()


推荐阅读