我正在使用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'])
但这会给我带来:
$ 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”等效的操作?