docker的restart策略

weixin_34320159發表於2018-03-30

docker支援如下restart策略:

  • no – 容器退出時不要自動重啟。這個是預設值。* on-failure[:max-retries] – 只在容器以非0狀態碼退出時重啟。可選的,可以退出docker daemon嘗試重啟容器的次數。* always – 不管退出狀態碼是什麼始終重啟容器。當指定always時,docker daemon將無限次數地重啟容器。容器也會在daemon啟動時嘗試重啟,不管容器當時的狀態如何。* unless-stopped – 不管退出狀態碼是什麼始終重啟容器,不過當daemon啟動時,如果容器之前已經為停止狀態,不要嘗試啟動它。

在每次重啟容器之前,不斷地增加重啟延遲[上一次重啟的雙倍延遲,從100毫秒開始]來防止影響伺服器。這意味著daemon將等待100ms,然後200 ms, 400, 800, 1600等等,直到超過on-failure限制,或執行docker stop或docker rm -f。
如果容器重啟成功[容器啟動後並執行至少10秒],然後delay重置為預設的100ms。
你可以使用on-failure策略指定docker嘗試重啟容器的最大次數。預設下docker將無限次數重啟容器。可以通過docker inspect來檢視已經嘗試重啟容器了多少次。例如,獲取容器“my-container”的重啟次數:

  1. $ docker inspect -f "{{ .RestartCount }}" my-container
  2. 2

或者獲取上一次容器重啟時間:

  1. $ docker inspect -f "{{ .State.StartedAt }}" my-container
  2. 2015-03-04T23:47:07.691840179Z

示例

  1. $ docker run --restart=always redis

這執行了一個restart策略為always的redis容器,以使得容器退出時,docker將重啟它。

  1. $ docker run --restart=on-failure:10 redis

這個執行了一個restart策略為on-failure,最大重啟次數為10的redis容器。如果redis以非0狀態退出連續退出超過10次,那麼docker將中斷嘗試重啟這個容器。只有on-failure策略支援設定最大重啟次數限制。

相關文章