【问题标题】:starting docker container from python messes up terminal settings从 python 启动 docker 容器会弄乱终端设置
【发布时间】:2016-05-02 15:40:48
【问题描述】:

我正在从 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,但同样的事情发生了。

【问题讨论】:

  • 您的意思是将 stdin=DEVNULL 传递给 Popen 还是 docker run?
  • Popen(.. stdin=subprocess.DEVNULL)(这样终端就不会附加标准流)
  • subprocess.DEVNULL 不存在。我用stdin=None 进行了尝试,然后删除-t 就成功了。您应该将此作为答案,以便我对其进行投票。谢谢!
  • subprocess.DEVNULL(你试过用谷歌搜索吗?)确实存在于 Python 3 和 it is easy to emulate it on Python 2 中。如果您找到了解决方案;您可以将其发布为您自己的答案。

标签: python python-2.7 docker subprocess


【解决方案1】:

我通过删除 -t 并传入 stdin=None 来解决此问题。这是 J.F. Sebastian 在评论中提出的,他不想将其发布为答案,所以我是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    相关资源
    最近更新 更多