docker - 从 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: 文件号
错误。我该如何解决这个问题?
解决方案
当您使用 python 运行子进程时,它会创建一个子进程并将命令传递给它。因此,当您运行 docker run 命令时,它会创建一个容器实例并允许您在容器内运行命令。
当您运行docker run时,它会创建一个容器并保留在容器内。
docker run --rm在你的 python 代码
中,一旦命令执行,这将退出容器。请检查引号格式一次subprocess.Popen()
推荐阅读
- c# - 将 ML.NET 的 CreatePredictionEngine 与发出的类型一起使用
- python - 在列表中查找匹配的项目序列
- r - 如何在不缩小r闪亮中的矩阵大小的情况下向输入矩阵添加列?
- html - 如何在 ASP .NET Core Web 应用程序中为不同视图创建不同的背景图像
- php - 每次我使用 php 添加更多表时,顶部都有不需要的空间
- airflow - 如何设置默认的 dag 触发器配置 json
- ruby-on-rails - 升级到 Ruby 3.0 后应用程序(rails 6.1.1)无法启动
- apache-spark - TigerGraph - 通过 Spark 将数据加载到用户定义的元组
- java - Spring Cloud Configuration Server 不使用本地属性文件 - 需要使用复合配置
- spring-boot - 调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: Not a managed type