ubuntu20.04設置docker容器開機自啟動
- 1 docker自動啟動
- 2 容器設置自動啟動
- 3 容器自啟動失敗處理
1 docker自動啟動
(1)查看已啟動的服務
$ sudo systemctl list-units --type=service
此命令會列出所有當前加載的服務單元。默認情況下,此命令僅列出激活狀態為active
的服務單元。--all
選項可列出所有服務單位,無論激活狀態如何。
UNIT
:服務單元名稱
LOAD
:表示systemd是否正確解析了單元的配置并將該單元加載到內存中
ACTIVE
:表示單元的高級激活狀態,此信息表示單元是否已經成功啟動
SUB
:表示單元的低級別激活狀態,此信息指示有關該單元的更多詳細信息
DESCRIPTION
:表示單元的簡短描述
圖中docker明務已經啟動,如果沒有啟動,則執行啟動命令: systemctl start docker
(2)查看是否設置開機啟動
$ sudo systemctl list-unit-files | grep docker
#或者使用查看status
$ sudo systemctl status docker.service
顯示enabled,說明docker服務已設置開機啟動 ,如果未設置,則執行命令: systemctl enable docker.service
2 容器設置自動啟動
(1)在啟動命令中添加 --restart=always
sudo docker run -d --restart=always --name=nginx 605c77e624dd
參數說明:
--restart=always
:表示容器退出時,docker會總是自動重啟這個容器 ?
--restart=on-failure:3
:表示容器的退出狀態碼非0(非正常退出),自動重啟容器,3是自動重啟的次數。超過3此則不重啟 ?
--restart=no
:默認值,容器退出時,docker不自動重啟容器 ?
--restart=unless-stopped
:表示容器退出時總是重啟,但是不考慮docker守護進程運行時就已經停止的容器
(2)把運行中的容器更新為自啟動
$ sudo docker update --restart=always [容器id或name]
參考文章:
Docker服務以及容器如何設置服務器開機自動啟動
docker服務設置自動啟動
3 容器自啟動失敗處理
(1)在執行以下命令啟動容器后,重啟服務器,發現容器沒有自動啟動。
$ sudo docker run -d --name test --gpus all -p 192.168.3.30:80:5000 --restart=always waf/facerecognition/arm64v8
$ sudo reboot
查看docker服務自啟動狀態
$ sudo docker ps
$ sudo journalctl -u docker.service
出現錯誤信息:
level=warning msg="Failed to allocate and map port 80-80: Error starting userland proxy: listen tcp4 192.168.3.30:80: bind: cannot assign requested address"
…
level=error msg="failed to start container" container=ecfb585203a6d0d172d... error="driver failed programming external connectivity on endpoint test (18458c46..>
(2)修改-p參數,執行啟動容器命令后,重啟服務器,test
和test2
容器均可以自啟動。
$ sudo docker run -d --name test --gpus all -p 127.0.0.1:80:5000 --restart=always waf/facerecognition/arm64v8
$ sudo docker run -d --name test2 --gpus all -p 90:5000 --restart=always waf/facerecognition/arm64v8
$ sudo reboot
$ sudo docker ps
但是使用postman發送請求時,只有test2即90端口可以接收到,80無法接收到。所以在部署服務啟動容器時,
-p參數直接寫端口
,不要寫ip(192.168.3.30)
或者“127.0.0.1”
。
參考文檔:
Bind: cannot assign requested address