Help us understand the problem. What is going on with this article?

Docker入門 コンテナのライフサイクル

More than 1 year has passed since last update.

コンテナのライフサイクル

コンテナとは、一緒の仮想環境。
生成されてから停止されるまでのステータスを追っていく。

created

コンテナを生成する

docker create --name status-test -it alpine /bin/sh

そして、docker ps -aで状態を見てみる

$docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d75e0580aa81        alpine              "/bin/sh"           4 seconds ago       Created                                 status-test

ステータスはCreated
この状態ではまだコンテナは起動していない。

running

実際にコンテナを起動してみる。
$ docker start コンテナ名で起動する

$ docker start status-test
status-test
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d75e0580aa81        alpine              "/bin/sh"           4 minutes ago       Up 6 seconds                            status-test

ステータスが、CreatedからUp 6 secondsに変わりコンテナが起動されたことが確認できる。

paused

こんどは、startで起動したコンテナを$ docker pause コンテナ名停止させてみる

$ docker pause status-test
status-test

とりあえず成功。
肝心のステータスは、、、

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                  PORTS               NAMES
d75e0580aa81        alpine              "/bin/sh"           8 minutes ago       Up 4 minutes (Paused)                       status-test

Upにはなっているがその横に(Paused)の文字が。
一時停止状態になっていることが確認できます。

restarting

一時停止したコンテナを$ docker unpause コンテナ名で再起動させてみます。
この状態で一瞬だけrestartingになります!!

$ docker unpause status-test
status-test
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d75e0580aa81        alpine              "/bin/sh"           13 minutes ago      Up 8 minutes                            status-test

一時停止時にあった (Pause)の文字が消えてますね!ナイス!
そして、時間はstart実行時のからカウントされてるみたいですね。

exited

exitedはコンテナが終了した状態を指す。(この状態だとコンテナ自体はまだ存在している。)
$ docker stop コンテナ名を実行したときもこのステータスになる

$ docker stop status-test
status-test
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
d75e0580aa81        alpine              "/bin/sh"           20 minutes ago      Exited (137) About a minute ago                       status-test

ステータスがrunningからExitedへ変更された。
$docker startでまたrunning状態へ戻すことができる。

removing

Dockerのコンテナ削除中を表すステータス。
通常は、コンテナ削除にそう時間を要さないためこのremoving状態をみることはなかなかレア

コンテナ削除方法

停止中のコマンドの削除

$docker rm コンテナ名

起動中のコンテナの削除
強制的に削除する

$ docker rm -f コンテナ名

または
停止させてから削除コマンドを実行する

$ docker stop コンテナ名
$ docker rm コンテナ名

dead

コンテナが正常に終了できなかったときの状態
基本的に社会復帰させるのは不可能なので、迷わず削除!!削除!!削除!!

まとめ

              paused    dead
              /         /
created -> running -> exited -> removing
              \       /
              restarting

上記のようなライフサイクルでコンテナのステータスは変化する。
exitedの状態をstartで再起動させる場合は一度restartingを経由する

mtakehara21
サウナ大好きなんちゃってエンジニア。 サウナの数だけ強くなれるよ。
http://sauna-hacker.com
uluru
クラウドワーカーを活用した事業を行う会社(クラウドソーシング、入札情報速報サービスなどを運営)
https://www.uluru.biz/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした