Dockerのrestartの挙動を確認してみる
- まとめ
- --restart=no の場合 (デフォルト)
- --restart=on-failure の場合
- --restart=unless-stopped の場合
- --restart=always の場合
- 補足
まとめ
とりあえず、まず挙動をまとめておく。
ケース | no | on-failure | unless-stopped | always |
---|---|---|---|---|
コンテナ終了時(終了ステータス「0」) | x | x | o | o |
コンテナ終了時(終了ステータス「0以外」) | x | o | o | o |
Docker再起動時(終了ステータス「0」) | x | x | x | o |
Docker再起動時(終了ステータス「0以外」) | x | o | x | o |
Docker再起動時(終了していない状態) | x | o | o | o |
--restart=no の場合 (デフォルト)
デフォルトでは、終了すると、
$ docker run -it --name my-con1 ubuntu # exit
コンテナは停止する。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5a6cdccff2e7 ubuntu "/bin/bash" 6 seconds ago Exited (0) 3 seconds ago my-con1
また、コンテナが起動した状態で、
$ docker start my-con1 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5a6cdccff2e7 ubuntu "/bin/bash" 34 seconds ago Up 4 seconds my-con1
Dockerを再起動すると、
$ sudo systemctl restart docker
コンテナは停止した状態になる。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5a6cdccff2e7 ubuntu "/bin/bash" 53 seconds ago Exited (0) 5 seconds ago my-con1
※このコンテナは削除
$ docker rm my-con1
--restart=on-failure の場合
on-failureを指定した場合、
終了ステータス「0以外」で終了した場合は、
$ docker run -it --name my-con2 --restart=on-failure ubuntu # exit 1
再起動する。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 17fc40e7e78a ubuntu "/bin/bash" 3 minutes ago Up 5 seconds my-con2
終了ステータス「0」で終了した場合は、
$ docker attach my-con2 # exit
再起動しない。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 17fc40e7e78a ubuntu "/bin/bash" 7 minutes ago Exited (0) 25 seconds ago my-con2
また、
終了ステータスが「0以外」の状態で、
$ docker start my-con2 $ docker kill my-con2 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 17fc40e7e78a ubuntu "/bin/bash" 8 minutes ago Exited (137) 5 seconds ago my-con2
Dockerを再起動すると、
$ sudo systemctl restart docker
コンテナは再起動する。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 17fc40e7e78a ubuntu "/bin/bash" 9 minutes ago Up 3 seconds my-con2
しかし、
終了ステータスが「0」の状態で、
$ docker stop my-con2 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 17fc40e7e78a ubuntu "/bin/bash" 11 minutes ago Exited (0) 3 seconds ago my-con2
Dockerを再起動すると、
$ sudo systemctl restart docker
コンテナは再起動しない。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 17fc40e7e78a ubuntu "/bin/bash" 11 minutes ago Exited (0) 35 seconds ago my-con2
※このコンテナは削除
$ docker rm my-con2
--restart=unless-stopped の場合
unless-stoppedを指定した場合、
終了ステータスに関係なく、終了した場合は、
$ docker run -it --name my-con3 --restart=unless-stopped ubuntu # exit
コンテナは再起動する。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a3d5c4bf3eb ubuntu "/bin/bash" 4 seconds ago Up 2 seconds my-con3
Dockerを再起動した場合も、
$ sudo systemctl restart docker
コンテナは再起動するが、
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a3d5c4bf3eb ubuntu "/bin/bash" 2 minutes ago Up 2 seconds my-con3
終了ステータスに関係なく、コンテナが停止している場合、
$ docker kill my-con3 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a3d5c4bf3eb ubuntu "/bin/bash" 3 minutes ago Exited (137) 3 seconds ago my-con3
Dockerを再起動しても、
$ sudo systemctl restart docker
コンテナは再起動しない。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a3d5c4bf3eb ubuntu "/bin/bash" 3 minutes ago Exited (137) 34 seconds ago my-con3
※このコンテナは削除
$ docker rm my-con3
--restart=always の場合
alwaysを指定した場合、 終了ステータスに関係なく、終了した場合は、
$ docker run -it --name my-con4 --restart=always ubuntu # exit
コンテナは再起動する。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 374667e4f4db ubuntu "/bin/bash" 6 seconds ago Up 4 seconds my-con4
終了ステータスに関係なく、コンテナが停止している場合も、
$ docker stop my-con4 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 374667e4f4db ubuntu "/bin/bash" About a minute ago Exited (0) 3 seconds ago my-con4
Dockerを再起動すると、
$ sudo systemctl restart docker
コンテナは再起動する。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 374667e4f4db ubuntu "/bin/bash" 2 minutes ago Up 5 seconds my-con4
補足
Dockerのrestartの挙動を確認してみる(補足) https://yk5656.hatenablog.com/entry/20201225/1608822000