みなさん、Dockerのある生活を楽しんでいますか?Dockerコンテナの機嫌は、今日もよいですか?本記事では、Dockerコンテナの機嫌(ステータス)の確認方法とステータスの移り変わり(遷移)を紹介します。
もくじ
Dockerコンテナのステータスを確認する方法
Dockerコンテナのステータスを確認する方法を、2つ紹介します。
docker psコマンドを使う方法
docker ps -aコマンドのSTATUSを確認します。以下の例では、ステータスexistedでコンテナの実行は終了しています。終了時の終了コードは137です。
|
1 2 |
$ 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でコンテナの実行は終了しています。
|
1 2 |
$ 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状態へ遷移します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ #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秒間隔で実行しています。
|
1 2 |
$ docker run --name alpine --restart=always alpine $ watch -n 0.1 docker inspect --format='{{.State.Status}}' alpine |
running
runningは、コンテナを実行している状態です。docker startもしくはdocker runコマンドでrunning状態になります。
|
1 2 3 4 5 6 |
$ #コンテナを作成、起動して、起動状態にしておく $ 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状態にもどすことができます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ #コンテナを一時停止 $ 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コマンドで終了コードを確認することができます。※ステータスの確認方法を参照
|
1 2 3 4 5 6 |
$ #コンテナを停止 $ docker stop alpine alpine $ #ステータスを確認 $ docker inspect --format='{{.State.Status}}' alpine exited |
dead
deadは、コンテナが停止を試みて停止が失敗した状態です。デバイスビジーや他のコンテナによりリソースが使われているようなときにdead状態になります。
さいごに
本記事ではDockerコンテナのステータスの遷移と確認の方法を紹介しました。ステータスの確認方法で紹介したdocker inspectコマンドは、ステータス以外にも様々な詳細情報を出力してくれます。Dockerコンテナでトラブルが発生したときにあわてないように、どのような情報を取得できるのかをあらかじめ確認をしておきたいですね。
投稿者プロフィール
最新の投稿
AWS2021年12月2日AWS Graviton3 プロセッサを搭載した EC2 C7g インスタンスが発表されました。
セキュリティ2021年7月14日ゼロデイ攻撃とは
セキュリティ2021年7月14日マルウェアとは
WAF2021年7月13日クロスサイトスクリプティングとは?



