Docker容器的重啓策略及docker run的--restart選項詳解

1. Docker容器的重啓策略

    Docker容器的重啓策略是面向生產環境的一個啓動策略,在開發過程中可以忽略該策略。

    Docker容器的重啓都是由Docker守護進程完成的,因此與守護進程息息相關。

    Docker容器的重啓策略如下:

    • no,默認策略,在容器退出時不重啓容器

    • on-failure,在容器非正常退出時(退出狀態非0),纔會重啓容器

      • on-failure:3,在容器非正常退出時重啓容器,最多重啓3次

    • always,在容器退出時總是重啓容器

    • unless-stopped,在容器退出時總是重啓容器,但是不考慮在Docker守護進程啓動時就已經停止了的容器

 例如:

docker run -p 8092:80 --name apicloud -v /home/lifehaier:/var/www/html -d --restart=on-failure:3 hub.docker.terminus.io:5000/aabb:20180315

解釋:使用docker run命令運行一個容器,該容器內部監聽80端口,與宿主機系統8092端口映射,命名該容器名稱爲apicloud,宿主機系統目錄/home/lifehaier與容器內部/var/www/html路徑映射,如果容器對應的images路徑/var/www/html下面有數據的話,則被宿主機/home/lifehaier路徑下面的數據覆蓋,-d參數是讓容器後臺運行,--restart=on-failure:3是指容器在未來出現異常退出(退出碼非0)的情況下循環重啓3次;hub.docker.terminus.io:5000/aabb:20180315 是images名稱,容器基於此images進行啓動。

2. Docker容器的退出狀態碼

    docker run的退出狀態碼如下:

    • 0,表示正常退出

    • 非0,表示異常退出(退出狀態碼採用chroot標準)

      • 125,Docker守護進程本身的錯誤

      • 126,容器啓動後,要執行的默認命令無法調用

      • 127,容器啓動後,要執行的默認命令不存在

      • 其他命令狀態碼,容器啓動後正常執行命令,退出命令時該命令的返回狀態碼作爲容器的退出狀態碼

3. docker run的--restart選項

  通過--restart選項,可以設置容器的重啓策略,以決定在容器退出時Docker守護進程是否重啓剛剛退出的容器。

    --restart選項通常只用於detached模式的容器。

    --restart選項不能與--rm選項同時使用。顯然,--restart選項適用於detached模式的容器,而--rm選項適用於foreground模式的容器。

      在docker ps查看容器時,對於使用了--restart選項的容器,其可能的狀態只有Up或Restarting兩種狀態。


4. 示例與補充

 示例:

docker run -d --restart=always bba-208
docker run -d --restart=on-failure:10 bba-208

 補充:

#查看容器重啓次數
docker inspect -f "{{ .RestartCount }}" bba-208
#查看容器最後一次的啓動時間
docker inspect -f "{{ .State.StartedAt }}" bba-208


參考鏈接:

https://docs.docker.com/engine/reference/run/

https://blog.csdn.net/taiyangdao/article/details/73076019



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章