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

Don*_*lon 6 python bash shell interactive docker

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

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

使用docker-py,我准备好了运行图像的一切。不过,似乎不支持docker.containers.run用于交互式 shell 。使用相反似乎合乎逻辑,所以我尝试了以下方法:subprocess

import subprocess

subprocess.Popen(['docker', 'run', '-it', '--rm', 'ubuntu', 'bash'])
Run Code Online (Sandbox Code Playgroud)

但这给了我:

$ python3 docker_run_test.py 
$ unable to setup input stream: unable to set IO streams as raw terminal: input/output error
$
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能python3 docker_run_test.py做相当于跑步的事情docker run -it --rm ubuntu bash?

Phi*_*ppe 2

我们可以用这个吗?

import os
os.system('docker run -it --rm ubuntu bash')
Run Code Online (Sandbox Code Playgroud)