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

参考

https://unskilled.site/%E3%83%9B%E3%82%B9%E3%83%88%E3%82%92%E5%86%8D%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%9F%E6%99%82%E3%81%AA%E3%81%A9%E3%81%ABdocker%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%82%92%E8%87%AA%E5%8B%95%E7%9A%84/
タイトルとURLをコピーしました