[Docker入門] Dockerコンテナのステータスを調べてみよう

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

みなさん、Dockerのある生活を楽しんでいますか?Dockerコンテナの機嫌は、今日もよいですか?本記事では、Dockerコンテナの機嫌(ステータス)の確認方法とステータスの移り変わり(遷移)を紹介します。

もくじ

Dockerコンテナのステータスを確認する方法

Dockerコンテナのステータスを確認する方法を、2つ紹介します。

docker psコマンドを使う方法

docker ps -aコマンドのSTATUSを確認します。以下の例では、ステータスexistedでコンテナの実行は終了しています。終了時の終了コードは137です。

docker inspectコマンドを使う方法

docker inspectコマンドは、コンテナの情報をJSON形式で確認をすることができます。--formatオプションで、指定したフォーマットで出力を行うことができます。コンテナのステータスは.State.Statusキーで確認をすることができます。

以下の実行例では、ステータスexitedでコンテナの実行は終了しています。

Dockerコンテナのステータス

Dockerコンテナのステータスは、以下の7種類があります。

  • created
  • restarting
  • running
  • removing
  • paused
  • exited
  • dead

それぞれのステータスは、以下の遷移図に従って変化していきます。

created

createdは、コンテナは作成されたがスタートしていない状態です。docker createコマンドでコンテナを作成すると、created状態になります。docker startコマンドで、running状態へ遷移します。

restarting

restartingは、コンテナが再起動している状態です。docker restartコマンドで再起動が行われます。以下の例では、docker restartコマンドでrestartingの状態を画面に取得するのが難しかったので、docker run--restartオプションで再起動を繰り返してステータス状態を取得しています。また、watchコマンドでステータス取得を0.1秒間隔で実行しています。

running

runningは、コンテナを実行している状態です。docker startもしくはdocker runコマンドでrunning状態になります。

removing

removingは、コンテナを削除している状態です。docker rmコマンドでコンテナの削除を行います。

paused

pausedは、コンテナが一時停止している状態です。docker pauseコマンドでpaused状態に遷移します。docker unpauseコマンドでrunning状態にもどすことができます。

existed

existedは、コンテナが実行され、終了した状態です。コンテナでの実行プロセスの終了もしくはdocekr stopコマンドでexistes状態に遷移します。docker ps -aコマンドで終了コードを確認することができます。※ステータスの確認方法を参照

dead

deadは、コンテナが停止を試みて停止が失敗した状態です。デバイスビジーや他のコンテナによりリソースが使われているようなときにdead状態になります。

さいごに

本記事ではDockerコンテナのステータスの遷移と確認の方法を紹介しました。ステータスの確認方法で紹介したdocker inspectコマンドは、ステータス以外にも様々な詳細情報を出力してくれます。Dockerコンテナでトラブルが発生したときにあわてないように、どのような情報を取得できるのかをあらかじめ確認をしておきたいですね。

スカイアーチ ファンタジー研究室

スカイアーチ ファンタジー研究室

EasyDoggie