一、通過 Docker 命令直接修改已啟動的容器(推薦-已驗證)
操作步驟:
1.執行更新命令:
docker update --restart=always <容器名或ID>
此命令會將容器的重啟策略調整為 always(無論容器以何種狀態退出,均自動重啟)。
2.驗證是否生效:
docker inspect <容器名或ID>
在前部分RestartPolicy位置查看到:
若輸出顯示 “Name”: “always”,則說明修改成功。
適用場景:
容器處于運行或停止狀態均可操作。
無需停止 Docker 服務,操作簡單且風險較低。
二、通過修改配置文件(備選方案)
若命令修改無效(如舊版本 Docker 兼容性問題),可手動編輯容器配置文件:
1停止容器及 Docker 服務
docker stop <容器名或ID> # 停止容器
systemctl stop docker # 停止 Docker 服務
2.修改配置文件:
定位到容器配置目錄:/var/lib/docker/containers/<容器ID>/
編輯 hostconfig.json ,找到 RestartPolicy 字段,修改為:
"RestartPolicy": {"Name": "always", "MaximumRetryCount": 0}
部分版本需同步修改 config.v2.json (添加 “RestartPolicy”: {“Name”: “always”})。
3.重啟 Docker 服務及容器:
systemctl start docker # 啟動 Docker 服務
docker start <容器名或ID> # 啟動容器
注意事項:
需確保 Docker 服務完全停止后再修改文件,否則可能導致配置被覆蓋。
適用于無法通過命令修改的特殊場景,如 Docker 版本兼容性問題。
三、其他相關建議
重啟策略類型(–restart參數):
no:不自動重啟(默認)。
always:始終重啟。
unless-stopped:Docker 服務重啟后自動啟動容器,除非容器被手動停止。
端口映射等參數修改:
若需同時調整端口映射或存儲路徑,需通過 docker commit 生成新鏡像并重新創建容器。
總結
推薦優先使用 docker update 命令,簡單高效且兼容性強。
修改配置文件適用于調試或特殊環境,但需謹慎操作以避免配置沖突。
可通過 docker inspect 驗證參數是否生效。
★★★★★★★★★★★★★★★★★★如何在啟動時就配置好?★★★★★★★★★★★★★★★★★★★
一、基本配置方法
在 docker run 命令中直接添加 --restart 參數即可:
docker run -d --restart=策略類型 [其他參數] 鏡像名
支持的策略類型:
no
默認策略,容器退出后不會自動重啟。on-failure僅在容器非正常退出(退出狀態碼非0)時重啟。可指定最大重試次數,例如 --restart=on-failure:3(最多重啟3次)。always無論容器以何種狀態退出(包括手動停止),Docker服務重啟后都會自動啟動該容器。unless-stopped類似 always,但排除 Docker 守護進程啟動前已被手動停止的容器。
二、配置示例
1. 始終自動重啟
docker run -d --restart=always --name my_nginx nginx
2. 僅在異常退出時重啟(最多5次)
docker run -d --restart=on-failure:5 --name my_app your_image
3. 排除手動停止的場景
docker run -d --restart=unless-stopped --name my_db mysql
三、驗證配置是否生效
通過以下命令檢查重啟策略:
docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' 容器名
輸出應為 always、on-failure 或 unless-stopped。
四、注意事項
策略優先級
手動執行 docker stop 后,always 策略的容器仍會在 Docker 服務重啟后自動啟動,而 unless-stopped 不會。
資源限制
頻繁重啟可能占用資源,建議為 on-failure 設置最大重試次數(如 :3)。
版本兼容性
unless-stopped 需要 Docker 1.9 或更高版本。
與 --rm 參數沖突
--restart 不能與 --rm(容器退出后自動刪除)同時使用。
五、生產環境推薦方案
長期運行的服務(如 Web 服務器):優先使用 always 或 unless-stopped。
一次性任務或批處理作業:使用 on-failure 并限制重試次數,避免無限重啟。
通過合理選擇策略,可確保容器在異常退出或宿主機重啟后自動恢復運行。