首页主机资讯Docker在CentOS上的故障排查方法

Docker在CentOS上的故障排查方法

时间2026-01-15 20:59:03发布访客分类主机资讯浏览697
导读:Docker在CentOS上的故障排查方法 一 快速定位流程 检查运行状态与版本:执行systemctl status docker与docker version,确认守护进程是否存活、客户端与服务端版本是否匹配。若提示无法连接,多半是守...

Docker在CentOS上的故障排查方法

一 快速定位流程

  • 检查运行状态与版本:执行systemctl status dockerdocker version,确认守护进程是否存活、客户端与服务端版本是否匹配。若提示无法连接,多半是守护进程未启动。
  • 查看服务日志:使用journalctl -u docker.service -b(或journalctl -xeu docker.service)定位启动失败的具体报错;部分系统也会写入**/var/log/docker.log**。
  • 校验内核与基础依赖:执行uname -r确认内核≥3.10;必要时更新系统并安装必要组件(如yum-utils、device-mapper-persistent-data、lvm2)。
  • 核对配置文件:检查**/etc/docker/daemon.json语法与路径权限;CentOS 7上也可同时核查/etc/sysconfig/docker**中的代理、存储路径等配置。
  • 验证网络与防火墙:确认firewalld/iptables未阻断Docker网络(如docker0与端口2375/2376);必要时在排障阶段短暂关闭防火墙验证。
  • 资源与文件系统:用df -h、free -m、top排查磁盘、内存与CPU压力;异常关机后考虑文件系统检查。

二 常见故障与修复对照表

症状 可能原因 快速修复
Cannot connect to the Docker daemon at unix:///var/run/docker.sock Docker未启动或socket异常 systemctl start docker;若/var/run/docker.sock为目录,rm -rf /var/run/docker.sock 后重启
Unit docker.service failed to load: No such file or directory 包未装或服务文件缺失 重新安装Docker CE;确认/usr/lib/systemd/system/docker.service存在
failed to start docker.service: unit docker.service is masked 服务被mask systemctl unmask docker.service 与 docker.socket 后启动
docker0: iptables: no chain/target/match by that name iptables链缺失(重启后常见) 重启Docker(systemctl restart docker)或重建iptables规则
Error initializing graphdriver: driver not supported / 启动卡住 存储驱动不兼容或异常 /etc/docker/daemon.json 设置"storage-driver": “overlay2” 后重启
Permission denied 挂载目录不可访问 SELinux策略限制 临时 setenforce 0 验证;或改用Z/ :Z挂载选项、调整SELinux策略
Job for docker.service failed(配置错误) daemon.json语法错误或路径不可写 校验JSON语法,修正配置并重启
container name “xxx” is already in use 容器名冲突 docker stop & & docker rm 或换名启动
安装时报 Requires: container-selinux > = 2.9 依赖版本过低 安装/更新 container-selinux 后重装Docker CE

三 存储驱动与网络关键点

  • 存储驱动:优先使用overlay2。在**/etc/docker/daemon.json**中设置{ “storage-driver”: “overlay2”} ,保存后重启Docker;如仍异常,检查内核是否支持并考虑升级。
  • 网络连通:排查docker0网桥与自定义网络是否正常;验证firewalld/iptables规则未阻断容器通信;排障时可短暂停止防火墙验证,但生产环境应改为精确放通策略。
  • 资源与文件系统:磁盘满、inode耗尽或异常关机导致的文件系统问题,都会引发Docker启动或运行异常;先清理空间、修复文件系统,再重启服务。

四 高风险操作与回退建议

  • 清理数据目录:执行**systemctl stop docker & & rm -rf /var/lib/docker/***会删除所有镜像、容器与卷,仅在确认可丢失数据时作为最后手段,并务必先备份。
  • 调整SELinux:临时setenforce 0仅用于定位;长期应通过正确的SELinux策略或挂载选项(如Z/ :Z)解决,避免直接禁用SELinux。
  • 变更防火墙:排障时可短暂停止firewalld验证,但应恢复并配置精确规则,避免长期暴露风险。

五 一键排查脚本示例

  • 复制以下脚本保存为docker-diag.sh,执行:bash docker-diag.sh
#!/usr/bin/env bash
set -Eeuo pipefail

echo "===== 系统信息 ====="
uname -r
echo "内核版本: $(uname -r)"

echo -e "\n===== Docker版本 ====="
docker version 2>
    /dev/null || echo "Docker未安装或守护进程未运行"

echo -e "\n===== 服务状态 ====="
systemctl is-active --quiet docker &
    &
 echo "Docker运行中" || {

  echo "Docker未运行,状态:"
  systemctl status --no-pager -l docker || true
}
    

echo -e "\n===== 服务日志(最近50行) ====="
journalctl -u docker.service -b --no-pager -n 50 || echo "无法读取journal日志"

echo -e "\n===== 配置文件检查 ====="
if [[ -f /etc/docker/daemon.json ]];
     then
  echo "daemon.json内容:"
  jq . /etc/docker/daemon.json 2>
    /dev/null || cat /etc/docker/daemon.json
else
  echo "未找到 /etc/docker/daemon.json"
fi

echo -e "\n===== 资源与挂载 ====="
df -h | head -n 10
free -m
mount | grep docker || echo "未检测到docker挂载点"

echo -e "\n===== 防火墙状态 ====="
systemctl is-active --quiet firewalld &
    &
     echo "firewalld运行中" || echo "firewalld未运行"

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Docker在CentOS上的故障排查方法
本文地址: https://pptw.com/jishu/780449.html
怎样提升centos中php-fpm的并发能力 centos下php如何配置SMTP邮件

游客 回复需填写必要信息