Docker 有提供重啟機制,可以控制容器在停止時自動重新啟動,或者是在 Docker 重開後自動啟動,重新啟動機制可確保連結的容器以正確的順序啟動。基本上在電腦(伺服器)被重新打開後,Docker 會自動重啟,但裡面原來運作著的容器預設是不會自動重新啟動的,因此就要在建立容器時使用 docker run --restart=?
指令指定重啟機制,或是已經建立的容器,則可以透過 docker update --restart=? [容器名稱]
指令更新容器的重啟機制。
--restart 參數(?)說明
no
➡️ 不自動重新啟動容器。(預設值)
on-failure[:max-retries]
➡️ 如果容器由於非零的結束代碼錯誤而停止,則重新啟動容器。可選:使用:max-retries
限制 Docker 守護行程嘗試重新啟動容器的次數。
always
➡️ 如果容器停止,請始終重新啟動容器。如果手動停止,則僅當 Docker 守護行程重新啟動或容器本身手動重新啟動時,才會重新啟動。(請參閱重新啟動機制詳細資訊中列出的第二個項目)
unless-stopped
➡️ 與always
類似,不同之處在於當容器停止(手動或其他方式)時,即使在 Docker 守護行程重新啟動後,它也不會重新啟動。
使用 --restart
請注意以下事項:
- 重新啟動機制僅在容器成功啟動後生效。在這種情況下,成功啟動意味著容器至少要啟動 10 秒,並且 Docker 已開始監視它。這可以防止沒有成功啟動的容器進入重新啟動死迴圈。
- 如果手動停止容器,則在 Docker 守護行程重新啟動或手動重新啟動容器之前,將忽略其重新啟動機制。這是防止再次進入重新啟動死迴圈。
- 這個重新啟動機制僅適用於容器。
我常用 --restart=always
做到自動重啟,在 docker-compose.yml 中也能透過 restart: always
指定重啟機制。希望有幫助到您。
▲ 精選圖片。
留言區 / Comments
萌芽論壇