首页/云/Docker 容器速查/dockerd 起不来:journalctl 定位
容器排障52 条

dockerd 起不来:journalctl 定位

服务启动失败时先读日志:journalctl -u docker 里会给出根因(daemon.json 语法、存储驱动、地址占用、内核模块或 cgroup 配置)。

Docker 容器速查云更新于 2026-10-13

从日志里找根因

守护进程起不来时先读日志:journalctl -u docker 会给出第一条错误,常见的有 daemon.json 语法错误、存储驱动不可用、监听地址或套接字被占用、目录权限异常。日志要从最早的那条错误读起,后面的报错大多是连带效应。需要更细的输出时可以先停掉服务,在前台以调试模式短时启动,观察完整输出后再恢复。

基本信息

查看状态systemctl status docker --no-pager
读取日志journalctl -u docker -n 100 --no-pager
前台调试systemctl stop docker 后执行 dockerd --debug
恢复服务改好配置后 systemctl start docker

典型使用场景

  • 改过 daemon.json 后服务起不来:优先怀疑配置文件语法
  • 磁盘或目录被调整过:检查数据目录的属主与权限
  • 升级后启动失败:确认存储驱动与内核支持是否匹配
  • 端口或套接字冲突:机器上有旧的守护进程或其他程序占用
  • 自动化部署失败:把日志采集进发布脚本,减少人工登录排查

定位步骤

定位步骤
# 先看服务状态概览
systemctl status docker --no-pager | head -20

# 读最近的日志,从第一条错误看起
journalctl -u docker -n 100 --no-pager | tail -40

# 需要完整输出时短时前台启动
systemctl stop docker
dockerd --debug

# 校验配置文件语法后再启动
systemctl start docker && docker info | head -5

常见根因对照

日志线索根因处理
JSON 解析类报错配置文件语法不正确用 json 校验工具核对后再重启
address already in use监听地址或套接字被占用确认旧进程与占用端口的程序
驱动或存储类报错存储驱动与后端文件系统不匹配核对驱动配置与内核支持
权限与属主报错数据目录属主或权限异常恢复属主与最小权限
前台调试仅用于排查:结束后按 Ctrl+C 退出再启动服务,避免与托管实例抢套接字。
生产上重启守护进程会中断全部容器(未开启容器存活保留时),修复前先提示影响窗口并确认业务可接受。

易错点

  • 从最后一条错误开始读:根因通常在最早那条,后面的报错是连带效应,顺序反了会绕远路
  • 直接重启不看配置:配置错误不会被重启治愈,反复重启还会掩盖现场
  • 前台启动后忘了恢复托管:调试进程退出后服务没有自动拉起,容器全部停摆
  • 在生产上无提示重启:未开启容器存活保留时,重启守护进程会中断全部容器

数据来源与参考

  • Docker 官方文档:Troubleshoot the Docker daemon(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌