0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker】コンテナ状態と関連コマンド

Posted at

はじめに

Dockerコンテナの状態についてまとめてみました。
間違いなどがあればコメントいただけますと幸いです。

コンテナの状態

docker container ls (docker ps)--filterオプションでフィルタリングできるコンテナ状態としてドキュメントに明記されています。
https://docs.docker.com/reference/cli/docker/container/ls/

状態 説明
created 一度も起動されていないが作成された状態
running docker startdocker runなどで開始された状態
paused プロセスが一時停止された状態、再開することができる
exited コンテナ内部のプロセスが完了した、またはdocker stopによって停止された状態
restarting 停止状態から再起動している状態
removing docker rmによって削除されている状態
dead 何かしらの原因で機能しなくなった状態
再起動はできず、削除するしかない

コマンドと状態遷移

コンテナの状態を操作するコマンドの紹介です。
以下の図中のコマンドはすべてエイリアスとなっています。
例えば、docker createdocker container createの別表記です。
他のコマンドについてもcontainerを省略した書き方ですが、どちらでも正常に動作します。

実践

create

STATUSCreatedとなっています。
作成されて、起動は一度もされていない状態です。

$ docker create nginx

$ docker ps -f status=created
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS    PORTS     NAMES
44306d5a9d2f   nginx     "/docker-entrypoint.…"   About a minute ago   Created             loving_bassi

start

コンテナを起動します。
STATUSUpとなっています。

$ docker start 44306d5a9d2f

$ docker ps -f status=running
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS          PORTS     NAMES
44306d5a9d2f   nginx     "/docker-entrypoint.…"   2 minutes ago   Up 37 seconds   80/tcp    loving_bassi

pause / unpause

コンテナを一時停止します。
STATUSUpの後に(Paused)と表示されています。

$ docker pause 44306d5a9d2f

$ docker ps -f status=paused
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                       PORTS     NAMES
44306d5a9d2f   nginx     "/docker-entrypoint.…"   3 minutes ago   Up About a minute (Paused)   80/tcp    loving_bassi

一時停止を終了します。
running状態に戻りました。

$ docker unpause 44306d5a9d2f

$ docker ps -f status=running
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS              PORTS     NAMES
44306d5a9d2f   nginx     "/docker-entrypoint.…"   3 minutes ago   Up About a minute   80/tcp    loving_bassi

stop / restart

停止された時のSTATUSExitedです。

$ docker stop 44306d5a9d2f

$ docker ps -f status=exited
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                       PORTS     NAMES
44306d5a9d2f   nginx     "/docker-entrypoint.…"   3 minutes ago   Exited (0) 6 seconds ago               loving_bassi
$ docker restart 44306d5a9d2f

$ docker ps -f status=running
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
44306d5a9d2f   nginx     "/docker-entrypoint.…"   4 minutes ago   Up 2 seconds   80/tcp    loving_bassi

rm

$ docker stop 44306d5a9d2f
$ docker rm 44306d5a9d2f

エラーになるパターン

停止中コンテナの一時停止を試みる

pauserunning状態以外のコンテナに対しては使用できません。

$ docker ps -f status=exited
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                       PORTS     NAMES
44306d5a9d2f   nginx     "/docker-entrypoint.…"   5 minutes ago   Exited (0) 6 seconds ago               loving_bassi

$ docker pause 44306d5a9d2f
Error response from daemon: container 44306d5a9d2fb50cc6d767661761134f3ed6c8ea790aa4c69ef2923c0647ad0f is not running

起動中コンテナの削除を試みる

基本的にはコンテナを停止してから削除します。
起動中や一時停止中のコンテナを削除しようとするとエラーが発生します。
-fオプションをつけて強制的に削除する方法もありますが、誤操作防止のためにおすすめはしません。

$ docker ps -f status=running
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS          PORTS     NAMES
44306d5a9d2f   nginx     "/docker-entrypoint.…"   5 minutes ago   Up 40 seconds   80/tcp    loving_bassi

$ docker rm 44306d5a9d2f
Error response from daemon: cannot remove container "/loving_bassi": container is running: stop the container before removing or force remove

おわりに

最後までご覧いただきありがとうございました。
参考になったという方はアクションをいただけますと励みになります!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?