2016-05-02 5 views
2

サブプロセスからドッキング・コンテナを開始しています。ポップしても動作しますが、スクリプトが戻ってくると、シェルの端末設定がうまくいきません。何もエコーされません。私は端末でtsetとこれを修正することができますが、私はそれを必要としたくありません。誰でもここにドッカーで働いていて、この問題を見て解決しましたか?ここでPythonのドッキング・コンテナを起動すると端末設定が壊れる

私はコンテナを始めています方法です:

 cmd = ['sudo', 
       'docker', 
       'run', 
       '-t', 
       '-i', 
       'elucidbio/capdata:v2', 
       'bash' 
     ] 
     p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 

私は無限ループではbashを交換しnohupを使用して試してみましたが、同じことが起こりました。

+2

'-t'を削除して' stdin = DEVNULL'を渡そうとしましたか? [* "クライアント標準出力がリダイレクトまたはパイプされたときに' -t'を指定することは禁じられています*](https://docs.docker.com/engine/reference/run/) – jfs

+0

あなたはPopenにstdin = DEVNULLを渡すことを意味しますか?またはドッカーを実行するには? –

+2

'Popen(..stdin = subprocess.DEVNULL)'(標準ストリームが端末に接続されないように) – jfs

答えて

3

これを修正するには、-tを削除し、stdin = Noneを渡します。これはJ.F. Sebastianのコメントで示唆されており、答えとして投稿したくないので、私はそうです。

関連する問題