Dockerコンテナの自動再起動を設定する

基本的に24365で動かすコンテナや、日中のみ動かし、夜間だけサーバを停止するような運用をする場合には、「サーバが起動している=コンテナが起動している」状態にしたい。

コンテナが自動で再起動する設定は簡単にできるため、メモしておく。

docker-compose.ymlに追記する

以下の設定を追加する

restart: always

例えば、こんな感じ

api-node-0:
build: dockerfiles/catapult
command: bash -c "/bin-mount/wait /state/api-node-0-nemgen && /bin-mount/wait /state/api-node-0-broker && /bin/bash /userconfig/startApiServer.sh"
stop_signal: SIGINT
volumes:
- ../../build/catapult-config/api-node-0/userconfig/resources/:/userconfig/resources/
- ../../data/api-node-0:/data:rw
- ../../bin/bash:/bin-mount
- ../../build/state:/state
depends_on:
- setup-network
- api-node-0-nemgen
- api-node-broker-0
# 追加
restart: always

docker-composeを利用していない場合

自動再起動のオプションは以下の通り

# 有効化
--restart=always
# 無効化
--restart=no

docker updateコマンドを利用して、コンテナに再起動のオプションをつける

--restart=...の後に、コンテナ名を指定する

コマンド例

// 有効化
$ docker update --restart=always sample-1
// 無効化
$ docker update --restart=no sample-1

自動起動が有効になっているコンテナ一覧を表示するワンライナー

docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq) | grep always

出力結果はコンテナの一覧

sample-1
sample-2
sample-3

参考

ホストを再起動した時などにDockerコンテナを自動的に再起動できるようにする | Unskilled?
再起動ポリシーの設定 ホストを再起動するなりして、Dockerコンテナを立ち上げる際に手動で行うのはとても面倒なものです。 そこでコンテナを作るときに、runコマンドの--restartオプションをつけて、再起動のポリシーを決めておく手があ...
タイトルとURLをコピーしました