修改 docker 配置后需主动重载或重启才能生效:非核心参数用 systemctl reload docker(不中断容器),核心参数如 hosts、tls、data-root 等须 systemctl restart docker(容器会停止,除非启用 live-restore)。
修改 docker engine 配置(如 /etc/docker/daemon.json)后,需让守护进程重新加载或重启才能生效。关键在于:**改配置 ≠ 自动生效**,必须主动触发更新。
推荐方式:热重载配置(不中断容器)
如果只调整了日志驱动、镜像仓库、默认网络等非核心运行时参数,用 reload 最安全:
sudo systemctl reload docker- 守护进程保持运行,所有正在运行的容器持续工作
- 新配置立即生效,适合生产环境日常调参
必须重启守护进程的情况
以下修改无法通过 reload 生效,必须完整重启 dockerd:
- 修改了
hosts(监听地址,如启用 TCP 远程 API) - 启用了或调整了 TLS 证书路径(
tlscert/tlskey) - 变更了数据根目录(
data-root)或存储驱动(storage-driver) - 启用了
live-restore等影响生命周期的行为开关
执行:sudo systemctl restart docker,然后验证:sudo systemctl status docker(确认显示 active (running))。
注意容器状态影响
重启守护进程会终止所有运行中容器(除非启用了 live-restore):
- 镜像、卷、网络等持久化资源不受影响
- 容器进程被 kill,状态丢失(如数据库未刷盘可能丢数据)
- 若需自动恢复业务,应提前为容器设置
--restart=unless-stopped或使用docker-compose up -d
旧系统兼容写法
在基于 SysV init 的老发行版(如 Debian 8、Ubuntu 14.04)上,用:
sudo service docker restart- 效果与
systemctl restart docker相同,但不依赖 systemd











