docker學習筆記-為容器配置重啟策略

紅燒鯉魚發表於2018-08-13

docker容器配置重啟策略

docker restart policies

docker容器的退出狀態碼

0 表示正常退出
非0 表示異常退出(退出狀態碼採用chroot標準)
125 Docker守護程式本身的錯誤
126 容器啟動後,要執行的預設命令無法呼叫
127 容器啟動後,要執行的預設命令不存在
其他命令狀態碼 容器啟動後正常執行命令,退出命令時該命令的返回狀態碼作為容器的退出狀態碼

重啟策略配置

在docker run 容器時可以通過 --restart來配置該容器的重啟策略,當一個容器配置了重啟策略時,在docker ps中可以看到該容器的狀態只能為 up 或 restarting

dockers包含的重啟策略:

重啟策略 含義
no 預設的引數,即不重啟
on-failure[:max-retries] 在容器非正常退出時(退出狀態非0),才會重啟容器,最大重啟次數為 max-retries
always 在容器退出時總是重啟容器,不論退出狀態碼為多少。 同時在docker守護程式啟動,都會重啟該容器
unless-stopped 在容器退出時總是重啟容器,不論退出狀態碼為多少。但是在docker守護程式啟動時已經停止的容器不會重啟

值得注意的是docker在重啟失敗時會每次增加一個延遲,避免無謂的重啟空佔資源,例如某個容器啟動失敗,並設定了重啟策略,一開始延遲100ms,緊接著的每一次重啟失敗,會延遲2倍的時間,意味著200ms,400ms,800ms and so on。直到docker程式被停止,或者容器被刪除。

當該容器重新啟動成功時(restart success,並且正常執行了超過10s),這個延遲時間會被重置為100ms

容器的重啟資訊可以在docker inspect中獲取,例如次數與時間

$ docker inspect -f "{{ .RestartCount }}" my-container
# 2
$ docker inspect -f "{{ .State.StartedAt }}" my-container
# 2015-03-04T23:47:07.691840179Z
複製程式碼

設定了重啟策略的容器,不能被clean up ,即docker rm -v my-container

參考:docs.docker.com/engine/refe…

相關文章