reboot 后 Docker服務及容器自動啟動設置


重啟reboot操作系統后,發現docker 服務未啟動,容器也未啟動,天生反骨,怎么才能重啟后自動啟動呢

解決問題兩個問題:

1、docker服務自動重啟設置

systemctl enable docker.service

2、docker容器自動啟動設置

docker ps -a

使用一下命令對鏡像從起: docker restart imageid

在運行docker容器時可以加如下參數來保證每次docker服務重啟后容器也自動重啟:

docker run --restart=always

如果已經啟動了則可以使用如下命令:

docker update --restart=always

重啟系統后

docker ps -a

--restart具體參數值詳細信息:

  • no - 容器退出時,不重啟容器;
  • on-failure - 只有在非0狀態退出時才從新啟動容器;如果容器由於錯誤而退出,則將其重新啟動,非零退出代碼表示錯誤
  • unless-stopped - 重新啟動容器,除非明確停止容器或者 Docker 被停止或重新啟動
  • always -只要容器停止了,就重新啟動

還可以在使用on - failure策略時,指定Docker將嘗試重新啟動容器的最大次數。默認情況下,Docker將嘗試永遠重新啟動容器。

sudo docker run --restart=on-failure:10 redis

如果創建時未指定 --restart=always ,可通過update 命令

docker update --restart=always CONTAINER ID

下面例子的 Redis 容器會一直重啟,除非明確停止這個容器或 Docker 重啟了。

docker run -dit --restart unless-stopped redis

1.1 重啟策略詳情

使用重啟策略時,記住以下幾點:

重啟策略只在容器啟動成功后才生效。這種情況下,成功啟動的意思是容器運行 10 秒以上,並且 Docker 已經開始監控它。這可以防止根本不啟動的容器進入重啟循環。
如果你手動停止一個容器,它的重啟策略會被忽略,直到 Docker 守護進程重啟或容器手動重啟。這是防止重啟循環的另一個嘗試。
重啟策略只作用於容器。swarm 服務的重啟策略配置方式不同。查看 與服務重啟相關的標志。

使用進程管理器

如果重啟策略無法滿足你的需求,例如依賴 Docker 容器的 Docker 外部進程,可以使用進程管理器,例如 upstart、systemd 或 supervisor。

警告:不要嘗試將 Docker 重啟策略與主機級進程管理器結合使用,因為這會產生沖突。

要使用進程管理器,請將其配置為使用通常用於手動啟動容器的 docker start 或 docker service 命令啟動容器或服務。有關更多詳細信息,請參閱特定流程管理器的文檔。
在容器內使用進程管理器

進程管理器也可以在容器內運行,以檢查進程是否正在運行,如果沒運行,則啟動/重新啟動進程。

警告:Docker 對這些無感知,只是在容器內監控操作系統進程。

Docker 並不推薦這種方法,因為它依賴於平台,甚至在給定的 Linux 發行版的不同版本中有所不同。


免責聲明!

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



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