从python启动docker容器会弄乱终端设置

我正在从subprocess.Popen启动一个docker容器,它可以工作,但是当脚本返回时,我的shell的终端设置被搞砸了.没有回声.我可以在终端中使用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 = None来解决此问题.塞巴斯蒂安·J·F·塞巴斯蒂安(J.F. Sebastian)在评论中建议了这一点,他不想将其发布为答案,所以我同意.

上一篇:如何正确清理文件名(防止shell注入)?


下一篇:python-是否有一种方法可以从subprocess.Popen实例中读取字符,当它调用的进程尚未发出换行符时?