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

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

もくじ

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

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

docker psコマンドを使う方法

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

$ docker ps -a | grep alpine
ff869564e0d4        alpine                           "sh -c 'tail -f /dev…"   About an hour ago   Exited (137) 3 minutes ago

docker inspectコマンドを使う方法

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

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

$ docker inspect --format='{{.State.Status}}' alpine
exited

Dockerコンテナのステータス

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

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

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

created

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

$ #Dockerのイメージを取得
$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
921b31ab772b: Pull complete
Digest: sha256:ca1c944a4f8486a153024d9965aafbe24f5723c1d5c02f4964c045a16d19dc54
Status: Downloaded newer image for alpine:latest
$
$ #コンテナを作成
$ docker create --name alpine alpine
80b24cd07cb0fe6c7681e2afc4dfcd00c344a2edf5c044ff3714bf42efb152dd
$ #ステータスを確認
$ docker inspect --format='{{.State.Status}}' alpine
created

restarting

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

$ docker run --name alpine --restart=always alpine
$ watch -n 0.1 docker inspect --format='{{.State.Status}}' alpine

running

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

$ #コンテナを作成、起動して、起動状態にしておく
$ docker run -d --name alpine alpine sh -c 'tail -f /dev/null'
848b0d5d484418a80d28439b37aeeae8dfc58782b819c9ef5d95cd7c433d93f3
$ #ステータスを確認
$ docker inspect --format='{{.State.Status}}' alpine
running

removing

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

paused

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

$ #コンテナを一時停止
$ docker pause alpine
alpine
$ #ステータスを確認
$ docker inspect --format='{{.State.Status}}' alpine
paused
$
$ #コンテナを再開
$ docker unpause alpine
alpine
$ #ステータスを確認
$ docker inspect --format='{{.State.Status}}' alpine
running

existed

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

$ #コンテナを停止
$ docker stop alpine
alpine
$ #ステータスを確認
$ docker inspect --format='{{.State.Status}}' alpine
exited

dead

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

さいごに

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

 

EasyDoggie

投稿者プロフィール

石川 淳
スカイアーチネットワークスで、新しいサービスの企画を行っています。
元SIer、元スマフォ向けゲームインフラの経験を生かして、新しいサービスをリリースしていきます。現在企画中のサービスはこちら。
https://github.com/easydoggie
コメントを頂けると嬉しいです。

ABOUTこの記事をかいた人

スカイアーチネットワークスで、新しいサービスの企画を行っています。 元SIer、元スマフォ向けゲームインフラの経験を生かして、新しいサービスをリリースしていきます。現在企画中のサービスはこちら。 https://github.com/easydoggie コメントを頂けると嬉しいです。