升级docker后systemd自启失效,需依次检查:1.服务启用状态(systemctl is-enabled docker);2.单元文件完整性(路径、权限、内容);3.docker.socket激活状态;4.启动限频(start-limit-hit)及真实错误日志。

升级 Docker 后 systemd 自启失效,通常不是“systemd 本身出问题”,而是升级过程破坏了服务注册、配置或依赖关系。重点排查方向是服务状态、单元文件完整性、启动依赖链和权限变更。
确认 docker.service 是否仍被启用
升级可能重置服务启用状态:
- 运行
systemctl is-enabled docker—— 若返回disabled或masked,说明未启用或被屏蔽 - 若为
masked:执行sudo systemctl unmask docker解除屏蔽 - 若为
disabled:执行sudo systemctl enable docker重新启用(会创建软链接到/etc/systemd/system/multi-user.target.wants/)
检查 systemd 单元文件是否被覆盖或损坏
Docker 升级(尤其通过 rpm/deb 包)可能替换或删除原 docker.service 文件:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 查路径是否存在:
ls /usr/lib/systemd/system/docker.service(RHEL/CentOS)或/lib/systemd/system/docker.service(Debian/Ubuntu) - 若文件缺失,可尝试重装 Docker 包(如
yum reinstall docker-ce或apt install --reinstall docker-ce) - 若文件存在但内容异常(比如空、权限为 000、Owner 不是 root),用
stat /usr/lib/systemd/system/docker.service核对权限(应为 644)和属主
验证依赖服务与 socket 激活机制
Docker 19.03+ 默认启用 docker.socket 触发式启动,升级后该 socket 可能未启用或失效:
- 运行
systemctl status docker.socket,确认其状态为active (listening) - 若 inactive,执行
sudo systemctl enable --now docker.socket - 检查
docker.service中是否含WantedBy=docker.socket或Requires=docker.socket,避免手动启动时绕过 socket 激活逻辑
检查启动失败的深层原因(非表面“没自启”)
即使 enable 成功,也可能因前置失败导致 systemd 不再尝试启动:
- 运行
sudo systemctl status docker,看是否显示failed (Result: start-limit-hit)—— 表明反复启动失败后被 systemd 限频 - 若有此提示,先重置计数:
sudo systemctl reset-failed docker,再sudo systemctl start docker - 查看真实错误:
sudo journalctl -u docker --since "1 hour ago" -n 50 -e,重点关注ExecStart=行之后的报错(如 containerd 路径错、storage-driver 不兼容、/var/run/docker.sock权限拒绝等)










