みなさん、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日クロスサイトスクリプティングとは?