Docker學習4-學會如何讓容器開機自啟服務【坑】


前言

小龍親測重啟服務器后 docker 容器沒跑起來,相信有不少小伙伴在用docker部署容器的時候也發現每次開機服務就沒有自啟了,需要手動去執行把容器服務開啟起來,但有沒有可以讓它開機自啟呢?顯然是有的。

一、收集需要自啟的容器id或name

1、以mysql5.7的容器name為例,查詢容器:

[root@iZbp19lugf22zbsubsf1y6Z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb665f57e66b mysql:5.7 "docker-entrypoint.s…" 7 days ago Exited (0) 8 minutes ago mysql

2、根據上面的容器name,我們手動運行啟動一下,可多個。

[root@iZbp19lugf22zbsubsf1y6Z ~]# docker start mysql
mysql

3、查看已運行的容器,可以看到我們手動是這樣的一個操作來完成啟動

[root@iZbp19lugf22zbsubsf1y6Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb665f57e66b mysql:5.7 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 33060/tcp, 0.0.0.0:3310->3306/tcp mysql

二、利用 shell 腳本來完成手動運行容器命令

1、增加一個sh腳本:vi start.sh

[root@iZbp19lugf22zbsubsf1y6Z ~]# vi start.sh

2、編輯一個啟動命令把保存退出即可,容器name為例:docker start mysql

3、自測一下運行 start.sh 腳本,可以正常啟動沒問題的。

[root@iZbp19lugf22zbsubsf1y6Z ~]# . start.sh
mysql

三、認識能開機自啟的文件:/etc/rc.d/rc.local

1、我們將 . start.sh 腳本添加至:/etc/rc.d/rc.local

echo ". ~/start.sh">> /etc/rc.d/rc.local

2、查看是否已添加:cat /etc/rc.d/rc.local

3、設置 rc.local 文件權限:chmod +x /etc/rc.d/rc.local

[root@iZbp19lugf22zbsubsf1y6Z ~]# chmod +x /etc/rc.d/rc.local
[root@iZbp19lugf22zbsubsf1y6Z ~]# 

4、完成上面的操作后,就可以:reboot 試一下啦,連接后查看運行中容器:docker ps。

[root@iZbp19lugf22zbsubsf1y6Z ~]# reboot

Press Ctrl+C to cancel or Enter to reconnect immediately.
Reconnecting in 1 seconds...
[root@iZbp19lugf22zbsubsf1y6Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb665f57e66b mysql:5.7 "docker-entrypoint.s…" 22 minutes ago Up 8 seconds 33060/tcp, 0.0.0.0:3310->3306/tcp mysql

顯然這一操作很有必要學會哦,不然每次重啟都需要手動去啟動,是在太麻煩了。以前是我不會,但是最后還有一種更方便是自帶的方法:

創建容器時添加參數自啟: --restart=always

如果前面已經創建容器了那么可以這樣:docker container update --restart=always 容器名字

歡迎來QQ交流群:482713805


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM