启用live restore特性可使dockerd重启时容器持续运行,通过在/etc/docker/daemon.json中添加"live-restore": true并执行systemctl reload docker生效,验证需docker info显示“live restore enabled: true”且容器startedat时间不变。

要让 Docker 守护进程(dockerd)重启时容器不中断,核心是启用 Live Restore 特性。它不是让容器“自动重启”,而是让容器在 dockerd 停止期间继续运行,等 dockerd 恢复后自动重新接管——真正实现服务零停机。
确认 Docker 版本与基础支持
Live Restore 自 Docker Engine 1.12 起正式支持,但需确保版本 ≥ 1.12.6(推荐使用 24.x 或 25.x 稳定版)。可通过以下命令检查:
docker version --format '{{.Server.Version}}'- 若版本过低,先升级 Docker,再操作配置
修改 daemon.json 启用 live-restore
编辑守护进程配置文件 /etc/docker/daemon.json(若不存在则新建),添加 "live-restore": true 字段。注意保持 JSON 格式合法:
- 示例完整配置片段:
{<br> "log-level": "warn",<br> "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],<br> "live-restore": true<br>} - 不要遗漏逗号分隔,避免因格式错误导致 dockerd 启动失败
- 无需改动其他参数,仅增加该字段即可生效
重载配置而非强制重启 dockerd
为避免误触发容器停止,应优先使用重载(reload)方式应用新配置:
- 执行:
sudo systemctl reload docker - 或发送信号:
sudo kill -SIGHUP $(pidof dockerd) - reload 不会中断 dockerd 进程,更安全;只有确认 reload 失败时才考虑
systemctl restart docker
验证与测试是否生效
配置生效后需双重验证:
- 检查状态:
docker info | grep -i "live restore"→ 应输出Live Restore Enabled: true - 实测验证:启动一个长运行容器(如
docker run -d --name test-alpine alpine sleep 3600),记录其启动时间:docker inspect test-alpine -f '{{.State.StartedAt}}' - 执行
sudo systemctl restart docker,再次查启动时间 —— 若时间未变,说明容器全程未重启
不复杂但容易忽略:live-restore 只解决 dockerd 中断问题,它不替代容器自身的重启策略(如 --restart=always)。两者配合使用,才能覆盖更广的故障场景——比如宿主机重启后容器自启,同时 dockerd 升级时不中断服务。











