dockerやらdocker composeでサーバ再起動時にプロセスがお亡くなりになる場合、
毎回コマンド打って起動させるのはめんどくさすぎる!
ちなみに以下のようにすればサーバ再起動時にも自動起動してくれます。
■docker/docker compose
・docker
1 |
$ docker run -it --restart=always --name adachin centos:7 |
・docker-compose.yml
1 2 3 4 5 6 7 8 |
# nginx nginx: image: nginx ports: - "8080:8080" volumes: - ~/nginx/conf.d:/etc/nginx/conf.d restart: always #これな |
ちなみにワンライナーでstopしているコンテナをrunするには!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# docker start $(docker ps -a | awk '$7="Exited" {print $1}' | grep -v CONTAINER) 6c635f33210b 5283c629d01e 4eb2cf13db44 ddfebcb55520 ed40486d8265 5969fae7f780 66b351aba849 6c635f33210b 5283c629d01e 4eb2cf13db44 ddfebcb55520 ed40486d8265 5969fae7f780 66b351aba849 |
こんな感じでいけやす!
だがしかし!
上記のように設定ファイルを書き換えるのが難しく、
runし直しするにもできない!(めんどう)な場合はどうするのか!!!??
■/etc/rc.local
https://qiita.com/hnishi/items/6a5b8b67d807f8dfe44e
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ more /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. #ここにぶち込む |
rc.localに追加すると実行したいコマンドが起動時に実行してくれます。(ディスクマウントとか最適)
そういえばCentOS7になると実行権限がないので付与しないと実行されないオチという….気をつけましょう!
それに特集なコマンドを実行させるにはあまりおすすめできません。(コマンドミスってsshできないとか。。。)
■cron
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a029crontabstartup.html
1 2 |
# crontab -l @reboot while true; do docker start $(docker ps -a | awk '$7="Exited" {print $1}' | grep -v CONTAINER); sleep 20s; done |
サーバ起動時に各ユーザーのモードで特定のプログラムを実行する場合はcronを使えばできます!(神か)
上記のようにイケてないですが、サーバ起動時に20秒後例のワンライナーが実行されるので、
これでいいんじゃないかと思います(白目)
■まとめ
ちゃんとrestart alwaysつけましょう!
よりもcronでできるのは知らなかった。。。。
1件のコメント
たろう · 2024/08/22 10:52 am
restartオプションについては起動中のコンテナに対しても設定変更可能です。
docker update <コンテナ名> –restart always