systemctl reload docker可热重载支持项(如registry-mirrors、live-restore等),无需重启dockerd;不支持项(如storage-driver)仍需systemctl restart docker生效。

修改 /etc/docker/daemon.json 后,无需重启 dockerd 进程就能让配置生效,关键在于“重载”而非“重启”。核心方法是向正在运行的 dockerd 进程发送 SIGHUP 信号,它会触发配置热加载——前提是该配置项支持动态重载。
确认配置项是否支持热重载
不是所有配置都能 reload 生效。Docker 官方明确支持以下常见项热重载:
- registry-mirrors(镜像加速地址)
- insecure-registries(不安全仓库)
- labels(守护进程标签)
- debug(调试模式开关)
- live-restore(启用后,即使后续重启 dockerd,容器也不退出)
- max-concurrent-downloads / uploads
- authorization-plugin、features 等部分高级选项
像 storage-driver、bridge 网络配置、data-root 等变更仍需重启 dockerd 才能生效。
用 systemctl reload 快速重载
这是最推荐、最符合 Linux 系统规范的方式:
- 编辑配置:
sudo vim /etc/docker/daemon.json,保存修改 - 执行重载:
sudo systemctl reload docker - 验证是否成功:
sudo docker info | grep -i "registry\|live\|label",检查输出是否含新配置
该命令本质就是向 dockerd 发送 SIGHUP,但由 systemd 统一管理,更安全可靠。
手动发送 SIGHUP 信号(备用方案)
当 systemctl 不可用或想快速验证时,可直接操作进程:
- 查 dockerd 进程 PID:
pidof dockerd或pgrep dockerd - 发送信号:
sudo kill -SIGHUP $(pidof dockerd)(等价于sudo kill -1 $(pidof dockerd)) - 观察日志确认:
sudo journalctl -u docker --since "1 minute ago" -f,应看到类似Configuration reloaded的提示
搭配 live-restore 实现“零中断”保障
即使你只做 reload,万一配置有误导致 dockerd 崩溃,容器也会退出。启用 live-restore 是生产环境强烈建议的兜底措施:
- 在
/etc/docker/daemon.json中加入:"live-restore": true - 执行
sudo systemctl reload docker或kill -SIGHUP - 验证:
sudo docker info | grep "Live Restore Enabled"应返回true
开启后,即便 dockerd 因配置错误意外退出,容器仍保持运行,直到 dockerd 恢复——这对高可用业务至关重要。
不复杂但容易忽略:reload 前先校验 JSON 格式(jq . /etc/docker/daemon.json > /dev/null),避免因语法错误导致重载失败甚至服务中断。


















