Dockerの世界でのデタッチモードとは何ですか?この記事のリンクを読みました が、デタッチモードの意味を正確に説明していません。
Dockerの世界でのデタッチモードとは何ですか?この記事のリンクを読みました が、デタッチモードの意味を正確に説明していません。
回答:
-d
オプションを使用して、Dockerコンテナをデタッチモードで起動できます。したがって、コンテナは起動し、バックグラウンドで実行されます。つまり、コンテナを起動し、起動後に他のコマンドにコンソールを使用できます。
デタッチモードの反対はフォアグラウンドモードです。これは、-d
オプションが使用されていない場合のデフォルトモードです。このモードでは、実行に使用しているコンソールがdocker run
標準入力、出力、およびエラーに接続されます。これは、コンソールがコンテナのプロセスに接続されていることを意味します。
デタッチモードでは、Dockerコンテナの標準出力をdocker logs -f <container_ID>
。で追跡できます。
両方のオプションを試してください。私は常にデタッチモードを使用してコンテナを実行しています。もう少しわかりやすく説明できればと思います。
docker logs -f [container_ID] > logs.txt
。それが機能しない場合は、以下の@BMitchで提案されているように、Dockerコンテナを起動するときに「-it」フラグを追加してみてください。
dockerコマンドラインのdetachオプションは、dockerクライアント(docker
)がサーバー(dockerd
)に要求を行い、その要求がサーバー上で継続している間、クライアントが終了することを示します。混乱の一部は、dockerが単一のプロセスのように見えることです。実際には、クライアントは、すべてのコマンドをサーバーに送信するRESTAPIの単なる薄いフロントエンドであるクライアント/サーバーアプリケーションです。
を使用するdocker container run --detach
と、コンテナが作成され、成功した場合はサーバーがコンテナIDで応答し、他のコマンドを自由に実行できる間、コンテナはサーバー上で引き続き実行されます。これは、他のコマンドを実行し続けている間にバックグラウンドで起動したいサーバー(nginxなど)によく使用されます。--interactive
および-tty
オプション(多くの場合省略形-it
)を使用してコンテナーを構成し、後でを実行しdocker container attach
て、すでに実行中のコンテナーに接続できることに注意してください。(で実行されているコンテナーに接続するまで、コンテナー-itd
によるstdinからの読み取りの試行は、渡した直後にすぐに終了することが多い入力の終了を確認する代わりに、ハングすることに注意してください-d
。)
デタッチオプションなしで実行した場合、クライアントはコンテナーの作成後すぐにアタッチAPI呼び出しを実行するため、出力を確認し、オプションでコンテナーで実行中のプロセスに入力を提供できます。これは、コンテナがインタラクティブなものを実行している場合に役立ちます(例/bin/bash
)。
他のいくつかのコマンドでは、docker-compose up -d
プロジェクト全体を開始し、バックグラウンドでサーバー上で実行したままにするなど、デタッチオプションを使用できます。docker service
サーバーに変更を送信してサービスのターゲット状態を作成または更新した後にデタッチするコマンドも多数あります。デタッチしない場合、クライアントはサービスの現在の状態がターゲット状態と一致するまで待機し、表示されます。展開の進行状況。注意docker service
コマンド、あなたは合格する必要があり--detach=false
取り付けられたままし、行動はあなたのバージョンに応じて、この一年間変更されています。
--detach-keys
)
--interactive
と--tty
(別名-it
)の両方でコンテナーに接続されていることを確認してください。
docker run -d -t ubuntu:14.04
dockerrun-dockerイメージからdockerコンテナとしてインスタンスを作成します。(イメージがローカルで利用できない場合は、Dockerハブからプルします)ubuntu-イメージ名
14.04-タグ
-d、-detach-デタッチモード
-t、-tty-疑似TTYを割り当てます