Centos 配置開機啟動指令碼啟動 docker 容器
阿新 • • 發佈:2020-11-13
Centos 配置開機啟動指令碼啟動 docker 容器
Intro
我們的 Centos 伺服器上部署了好多個 docker 容器,因故重啟的時候就會導致還得手動去手動重啟這些 docker 容器,為什麼不寫個指令碼自動重啟呢,於是就有了這篇文章。
批量啟動 Docker 容器
之前我們有提到過關於 docker 的一些騷操作 ,可以直接使用
docker start $(docker ps -aq) # 啟動所有容器
docker start $(docker ps -aq -f status=exited) # 啟動所有狀態為exited 的容器,和上面的命令效果一致
對於有 link 有依賴項的需要先把對應的依賴項先啟動,比如說我們有一個 identityserver 的 docker 容器(auth-server),別的容器啟動的時候會 link 它,這時候就需要先啟動 auth-server 再啟動其他容器,這時啟動指令碼則需要稍加修改
docker start auth-server # 先啟動 auth-server 容器
docker start $(docker ps -aq -f status=exited) # 再啟動所有狀態為exited 的容器
寫個 shell 指令碼
寫一個啟動 startup 指令碼,在系統啟動的時候執行它
在一個你想放啟動指令碼的地方建立一個 startup.sh
,我這裡建立在了 /usr/local/scripts/startup.sh
檔案內容如下:
#!/bin/bash # start docker container docker start auth-server docker start $(docker ps -aq -f status=exited)
設定檔案許可權:
sudo chmod +x /usr/local/scripts/startup.sh
設定開機啟動
在 /etc/rc.d/rc.local
檔案中新增開機啟動執行指令碼
sudo vi /etc/rc.d/rc.local
編輯檔案,新增自定義的啟動指令碼
#!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. touch /var/lock/subsys/local /usr/local/scripts/startup.sh # 新增自定義啟動指令碼
設定檔案許可權
chmod +x /etc/rc.d/rc.local
重啟驗證
執行 sudo reboot
重啟伺服器,稍後重新連線,執行 docker ps
檢視在執行的 docker 映象,有 docker 在執行就說明我們的啟動指令碼正常執行了~~