问题描述
当我们修改配置之后,需要重启服务,使得配置生效。
但是,重启 dockerd 服务,容器会被停止。我们希望容器继续运行,而不是停止。
该笔记将记录:如何重载配置文件,而无需重启 dockerd 服务。
解决方法
方案一、通过 HUP 信号
在 dockerd 中,通过 HUP 信号,可以重载某些选项,而无需重启容器。
受支持选项,参考 dockerd | Docker Documentation / CONFIGURATION RELOAD BEHAVIOR 文档。
例如,设置镜像加速站点,进行 reload 即可:
# vim /etc/docker/daemon.json { ... "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"], ... } # systemctl reload docker
方案二、通过 live-restore 特性
当守护进程 dockerd 不可用时,保持容器继续运行,可以使用如下配置:
# vim /etc/docker/daemon.json { ... "live-restore": true, ... } # systemctl reload docker # SIGHUP
在启用 live-restore 特性时,即使重启 Docker 服务,容器也不会退出。
但是,该方法也存在限制,参考 Keep containers alive during daemon downtime | Docker Documentation 文档。
参考文献
Keep containers alive during daemon downtime
Reload docker logging configuration without daemon restart – Stack Overflow
dockerd | Docker Documentation / CONFIGURATION RELOAD BEHAVIOR