かべぎわブログ

技術的なことについてかけたらいいな…

docker run --restart=always でコンテナを再起動させる

概要

docker run--restart=alwaysオプションを利用して、コマンド終了後にコンテナを再起動させてみたいと思います。

コマンド例

以下のように--restart=alwaysオプションを利用してDockerコンテナを起動しています。
ちなみにオプションの意味はこんなかんじ。

オプション 説明
always 常に再起動する
on-failure 終了ステータスが0(正常)以外のときに再起動する
on-failure:n 終了ステータスが0(正常)以外のときにn回再起動する
no 再起動しない(デフォルト)

今回はdateコマンドを実行させてみています。

$ sudo docker run --restart=always centos date
Thu Jul 12 12:10:00 UTC 2018
$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                                  PORTS               NAMES
1d2785c433bd        centos              "date"              4 seconds ago       Restarting (0) Less than a second ago                       vigilant_gates

再起動されて実行され続けていることがわかります。

$ sudo docker logs 1d2785c433bd
Thu Jul 12 12:10:00 UTC 2018
Thu Jul 12 12:10:01 UTC 2018
Thu Jul 12 12:10:01 UTC 2018
Thu Jul 12 12:10:02 UTC 2018
Thu Jul 12 12:10:03 UTC 2018
Thu Jul 12 12:10:05 UTC 2018
Thu Jul 12 12:10:08 UTC 2018

おわりに

--restart-alwaysをつけて起動したコンテナはdocker stopではすぐに起動してきちゃうので削除しなければならない。

$ sudo docker rm 1d2785c433bd
1d2785c433bd

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化

プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化