2017-01-06 18 views
1

私は実行中のドッカーコンテナmy_containerを持っているとしましょう。私は新しいシェルセッションを開始:ドッカーコンテナ内の特定のシェルインスタンスに接続していますか?

docker exec -it my_container bash

そして私は、プロセス(例えばPythonスクリプト)を起動し、バックグラウンドで実行中のスクリプトを維持するために、その後cntrl-pcntrl-qの入った容器を終了します。いくつかの異なるスクリプトでこれを何度か実行すると、特定のシェルインスタンスに再接続してスクリプトのstdを見ることができますか? docker attach my_containerを使用すると、私はdocker runコマンドを実行したときに最初に起動したシェルインスタンスに常に配置されます。

答えて

0

私が通常行うことは、最初のシェルの内側にtmuxを開始することです。そして、新しいウィンドウ内で他のプロセスを起動します。

理論的には可能ですが、docker execには依然として多くの問題がありますが、今のところ避ける方が良いです。

0

これは簡単なモードですが、役立つかもしれません。代わりに「エコー」の...」スクリプト名のsubstitude。

コンテナを実行し、その後、ドッキングウィンドウの幹部と直接スクリプトを実行し、別のファイルに出力をリダイレクトし

docker exec -ti containerId /bin/bash -c 'echo "Hello script1" > /var/log/1.log' 
docker exec -ti containerId /bin/bash -c 'echo "Hello script2" > /var/log/2.log' 

あなたが見ることができます

docker exec -ti containerId /bin/tail -f /var/log/1.log 
docker exec -ti containerId /bin/tail -f /var/log/2.log 

思い出させるあなたも

docker logs containerId 
使用することもできますドッカ幹部(uting)あなたが好きな猫、grepを、尾などいくつかの他のコマンドによってファイルで

コンテナ内で実行されているコマンドからの出力を/ dev/stdoutにリダイレクトすることができますが、必要であれば、stdoutに混在した多くのスクリプタからの出力が得られます。

関連する問題