我正在使用subprocess.Popen启动一个docker容器,它可以正常运行,但当脚本返回时,我的终端设置会被搞乱。没有任何输出。我可以在终端中使用"tset"命令来解决这个问题,但我不想要这样。有没有人在使用docker时遇到过这个问题并解决了呢?
以下是我启动容器的方式:
以下是我启动容器的方式:
cmd = ['sudo',
'docker',
'run',
'-t',
'-i',
'elucidbio/capdata:v2',
'bash'
]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
我曾试过用无限循环替换bash并使用nohup
,但仍然发生了同样的事情。
-t
并使用stdin=DEVNULL
吗?"当客户端标准输出被重定向或管道化时,禁止指定-t
。" - jfsPopen(.. stdin=subprocess.DEVNULL)
的翻译是“使用 subprocess.DEVNULL 参数来指定标准输入流不与终端关联”。 - jfssubprocess.DEVNULL
(你试过谷歌吗?)在Python 3中确实存在,并且在Python 2中很容易模拟它。如果你找到了解决方案,可以将其发布为自己的答案。 - jfssubprocess.DEVNULL
。而stdin=None
则意味着不同的事情。 - jfs