python - 如何使用 Python 启动交互式 Docker 容器?

标签 python bash shell docker interactive

我正在使用一个以交互模式启动的 Docker 镜像,如下所示:docker run -it --rm ubuntu bash

我使用的实际镜像有许多复杂的参数,这就是为什么我编写了一个脚本来构建完整的 docker run 命令并为我启动它。随着逻辑变得越来越复杂,我想将脚本从 bash 迁移到 Python。

使用docker-py,我准备好了运行该镜像的一切。似乎使用 docker.containers.run 进行交互式 shell 是 not supported , 然而。使用 subprocess 似乎很合乎逻辑,所以我尝试了以下方法:

import subprocess

subprocess.Popen(['docker', 'run', '-it', '--rm', 'ubuntu', 'bash'])

但这给了我:

$ python3 docker_run_test.py 
$ unable to setup input stream: unable to set IO streams as raw terminal: input/output error
$

请注意,错误消息出现在与 python 命令不同的 shell 提示符中。

如何使python3 docker_run_test.py执行相当于运行docker run -it --rm ubuntu bash

最佳答案

我们可以使用这个吗?

import os
os.system('docker run -it --rm ubuntu bash')

关于python - 如何使用 Python 启动交互式 Docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59507395/

相关文章:

ruby - 从 shell 脚本中执行 ruby​​ 文件失败

linux - 如何在文件中的特定字符串附近附加一个字符串?

python - GraphQL 和 Python with Json - 带有未转义字符的语法错误

python - 更新 pandas 数据框(具有复杂条件的元素的部分总和)的最快方法

python - 为夏令时调整日期时间索引

linux - 通过 bash 自动将 iptables 中的 IP 地址列入白名单

linux - 在 bash 脚本中打印子字符串

python - Django/MySQL 中的间隙检测

bash - 等到 bash 中的条件变为真

linux - 如何使用 shell 脚本在特定行的文件中写入 xml 标记