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