1. ホーム
  2. docker

[解決済み] コンテナを停止させずに切り離す正しい方法

2022-03-26 14:34:04

質問

Docker 1.1.2 (最新) で、コンテナを停止せずにデタッチする正しい方法は何ですか?

だから、例えば、私が試したら。

  • docker run -i -t foo /bin/bash または
  • docker attach foo (すでに実行中のコンテナの場合)

どちらもコンテナ内のターミナルに移動しますが、コンテナを停止せずにコンテナのターミナルを終了するにはどうすればよいのでしょうか?

exitCTR+C はどちらもコンテナを停止します。

解決方法は?

更新してください。 以下の回答にあるように Ctrl + p , Ctrl + q を実行すると、インタラクティブモードがデーモンモードに切り替わります。


さて Ctrl + C (または Ctrl + \ ) は、コンテナから切り離されるはずですが コンテナを殺してしまう メインプロセスがbashだからです。

ドッカーについて少し教えてください。 コンテナは本当のフル機能OSではありません。コンテナを実行すると、起動したプロセスが PID 1 を取り、init 権限を持つようになります。そのため、そのプロセスが終了すると、デーモンは新しいプロセスが(docker startで)起動されるまでコンテナを停止します(この件に関する詳しい説明はこちら)。 http://phusion.github.io/baseimage-docker/#intro )

もし、常にデタッチドモードで動作するコンテナが必要なら、次のようにすることをお勧めします。

docker run -d foo

コンテナ上にsshサーバーがある場合。(最も簡単な方法は、dockerizing openssh チュートリアルに従うことです。 https://docs.docker.com/engine/examples/running_ssh_service/ )

または、コンテナを再立ち上げするには

docker start foo

(デフォルトで切り離されます)