Dockerはデーモンベースのアーキテクチャを使用しており、CLIはマシンまたはリモートホストで個別に実行されている長期間有効なプロセスに接続します。 CLIコマンドは機能せず、デーモンが停止すると、通常、コンテナはオフラインになります。
Dockerのデーモンが起動しているかどうかを確認して、コンテナとdocker
の問題を診断できるようにする方法は次のとおりです。 指図。デーモンが実行されていない場合、docker
を使用するたびに、「Dockerデーモンに接続できません」というメッセージが表示されます。 CLI。
Systemctlで確認する
Dockerのステータスはsystemctl
で確認できます Systemdをサービス管理に使用するディストリビューション。これは、Debian、Ubuntu、CentOS、RedHatなどの一般的なオペレーティングシステムの大部分を対象としています。
sudo systemctl status docker
「アクティブ」の下に表示されているものを確認します。 active (running)
が表示された場合 緑色で表示されている場合、Dockerデーモンが実行されており、コンテナーが稼働しているはずです。
inactive
のアクティブ状態 サービスが停止したことを示します。 sudo systemctl start docker
を実行して起動してみてください 。ステータスがactive (running)
に変わるはずです デーモンの起動後。
failed
のステータスが表示された場合 赤字の場合、エラーのためデーモンを起動できませんでした。後でsystemctl
に表示されるサービスの起動ログを確認する必要があります コマンド出力には通常、何が悪かったのかを解明するためのヒントが含まれています。
明らかな解決策がない場合は、デーモンをデバッグモードで手動で起動して、起動ルーチンに関する詳細情報を取得します。
sudo dockerd --debug
ホストマシンを再起動するか、systemctl restart docker
を使用してDockerサービスを再起動します 一時的な問題の軽減にも役立ちます。
実行中のDockerデーモンを確認する別の方法は、そのプロセスIDファイルを調べることです。デーモンはそのプロセスIDを/var/run/docker.pid
に書き込みます 起動するたびに。このファイルが存在する場合、Dockerが実行され、CLI接続の準備ができている必要があります。
cat /var/run/docker.pid
この手法を使用して、デーモンが動作しているかどうかを確認するプログラムスクリプトを作成できます。ファイルを読み取ると、top
などのツールで使用できるIDが得られます Dockerプロセスに関する詳細情報を入手するには:
cat /var/run/docker.pid # process id = 1000 top -p 1000
pidof
を使用してプロセスIDを取得することもできます 指図。これはプロセス名を受け入れ、最初に一致するIDを返します:
pidof dockerd # process id = 1000 # view information with top top -p `pidof dockerd`
top
の場合、マシンにはアクティブなDockerデーモンがあります dockerd
に一致します 処理する。これは、docker.pid
を探すよりも信頼性が高い場合があります –デーモンがクラッシュした場合、docker.pid
プロセスが終了した後、取り残される可能性があります。
PIDファイルが存在する場合、デーモンは再起動を拒否します。これにより、ファイルが前回の実行から実際に孤立している場合、再起動ループでスタックする可能性があります。 dockerd
を実行するとこのメッセージが表示されます :
failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pidを削除してください。
pidof dockerd
を使用します Dockerが実際に停止していることを確認します。コマンドが出力を出力しない場合は続行し、実行中のプロセスがないことを確認します。
sudo rm /var/run/docker.pid
を実行します 古いプロセスIDファイルを削除します。次回dockerd
を実行すると、デーモンが正常に起動するはずです。 またはservice docker start
。
PIDファイルの問題は、仮想マシンのスナップショットを作成し、イメージから新しいインスタンスを作成するときによく発生します。プロセスファイルがスナップショットに含まれるため、新しいVMのDockerデーモンはすでに実行されていると見なします。
個々のコンテナのステータスには、docker ps
を介してアクセスします。 指図。これにより、現在実行中のすべてのコンテナの詳細を含むテーブルが出力されます。
docker ps
docker ps
を組み合わせる grep
を使用したコマンド 特定のコンテナがIDまたは名前で実行されているかどうかを簡単に確認するには:
docker ps | grep my-container-name
これで、出力がフィルタリングされ、選択したコンテナが表示されます。コンテナが実行されていない場合、レコードはありません。
停止したコンテナは、docker ps -a
を使用して表示されます 。停止したコンテナは、docker start
で開始できます コマンド:
docker start my-container
その後、コンテナは通常のdocker ps
に移動します 出力。 docker stop my-container
を使用して再度停止できます 。
Dockerが実行されているかどうかを知りたい場合は、いくつかのオプションを検討する必要があります。オペレーティングシステムのサービスマネージャーであるdocker.pid
があります ファイル、およびtop
などの通常のプロセス検査ツール およびpidof
。
個々のコンテナに関しては、docker ps
ホストで現在実行されているすべてのリストを提供します。コンテナの状態に関するより包括的な情報は、docker inspect container-name
で収集できます。 ネットワーク構成、ボリューム、ラベルの詳細をJSON形式で提供します。