?
Ce document utilise Manuel du site Web PHP chinois Libérer
Docker提供了重新啟動策略,以控制容器在退出時是自動啟動還是在Docker重新啟動時啟動。重新啟動策略可確保鏈接的容器以正確的順序啟動。Docker建議您使用重新啟動策略,并避免使用流程管理器啟動容器。
重新啟動策略--live-restore
與dockerd
命令的標(biāo)志不同。使用--live-restore
允許您在Docker升級期間保持容器運行,但網(wǎng)絡(luò)和用戶輸入將被中斷。
要為容器配置重新啟動策略,請--restart
在使用docker run
命令時使用該標(biāo)志。--restart
標(biāo)志的值可以是以下任何一項:
標(biāo)志 | 描述 |
---|---|
no | 不要自動重啟容器。(默認(rèn)) |
on-failure | 如果容器由于錯誤而退出,則將其重新啟動,該錯誤表現(xiàn)為非零退出代碼。 |
unless-stopped | 重新啟動容器,除非它明確停止或者Docker本身停止或重新啟動。 |
always | 如果停止,請始終重新啟動容器。 |
下面的示例啟動Redis容器,并將其配置為始終重新啟動,除非顯式停止或重新啟動Docker。
$ docker run -dit --restart unless-stopped redis
在使用重新啟動策略時,請記住以下幾點:
重新啟動策略僅在容器成功啟動后生效。在這種情況下,成功啟動意味著容器至少要運行10秒,而Docker已經(jīng)開始監(jiān)視它。這樣可以防止一個根本不啟動的容器進入重新啟動循環(huán)。
如果手動停止容器,則會忽略它的重新啟動策略,直到Docker守護進程重新啟動或手動重新啟動容器為止。這是防止重新啟動循環(huán)的另一次嘗試。
重新啟動策略僅適用于容器。群集服務(wù)的重新啟動策略配置不同。查看與重新啟動服務(wù)相關(guān)的標(biāo)志。
如果重新啟動策略不適合您的需求,例如Docker以外的進程依賴于Docker容器,則可以使用諸如upstart,systemd或supervisor之類的進程管理器。
流程管理器在容器中運行,檢查進程是否正在運行,如果沒有運行,則啟動進程。它不支持Docker,但只監(jiān)視容器中的操作系統(tǒng)進程。
Docker不推薦這種方法,因為它依賴于平臺,甚至在給定Linux發(fā)行版的不同版本中也不同。
警告不要嘗試將Docker重新啟動策略與宿主級流程管理器相結(jié)合,因為這兩者將發(fā)生沖突。
要使用進程管理器,請將其配置為使用您通常用來手動啟動容器的命令docker start
或docker service
命令啟動容器或服務(wù)。有關(guān)更多詳細信息,請參閱特定流程管理器的文檔。