Dockerデーモンまたはコンテナが実行中かどうかを確認する方法
Dockerはデーモンベースのアーキテクチャを使用しており、CLIはあなたのマシンまたはリモートホストで別に実行されている長寿命のプロセスに接続します。デーモンが停止すると、CLIコマンドは機能せず、通常コンテナはオフラインになります。
Dockerのデーモンが稼働しているかどうかを確認する方法です。これにより、コンテナやその問題を診断できます。
dockerコマンド。デーモンが実行されていないときは、Dockerデーモンに接続できないというメッセージが表示されます。
dockerCLI.
Systemctlで確認する
Dockerのステータスは、Systemdを使用してサービス管理を行うディストリビューションでsystemctlを使って確認できます。これにはDebian、Ubuntu、CentOS、Red Hatなどの人気のあるオペレーティングシステムの大部分が含まれています。
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このテクニックを使用して、デーモンが生きているかどうかを確認するプログラムスクリプトを作成できます。ファイルを読み取ることで、Dockerプロセスに関する詳細情報を取得するために top などのツールで使用できるIDが得られます。
cat /var/run/docker.pid
process id = 1000
top -p 1000
プロセスIDは、pidofコマンドを使って取得することもできます。これはプロセス名を受け取り、最初に一致するIDを返します。
pidof dockerd
process id = 1000
view information with top
top -p `pidof dockerd`
あなたのマシンにアクティブなDockerデーモンがある場合、topコマンドでdockerdプロセスが一致します。プロセスが終了した後にdocker.pidが残される可能性があるため、docker.pidを探すよりも信頼性が高いです。
滞留プロセスファイルの処理
デーモンはPIDファイルが存在する場合、再起動を拒否します。このファイルが以前の実行から孤立している場合、再起動ループにハマる可能性があります。dockerdを実行すると、このメッセージが表示されます。
failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pidDockerが実際に停止していることを確認するには、pidof dockerdを使用してください。コマンドが出力を何も生成しなければ、実行中のプロセスがないことを確認し、進めてください。
sudo rm /var/run/docker.pidを実行して古いプロセスIDファイルを削除します。次回dockerdまたはservice docker startを実行すると、デーモンは正常に起動するはずです。
PIDファイルの問題は、仮想マシンのスナップショットを取ってから、そのイメージから新しいインスタンスを作成するときによく発生します。プロセスファイルがスナップショットに含まれるため、新しいVM内のDockerデーモンはすでに実行中だと考えてしまいます。
個々のコンテナを確認する
個々のコンテナの状態は、docker psコマンドを通じて確認できます。これにより、現在実行中のすべてのコンテナの詳細を含むテーブルが表示されます。
docker psdocker 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形式で提供されます。




