基本的に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/