一、基础状态检查命令
1. 服务状态检查
# 查看Docker服务状态
sudo systemctl status docker.service
# 查看Docker socket状态
sudo systemctl status docker.socket
# 查看containerd状态(Docker依赖)
sudo systemctl status containerd2. 日志查看命令
# 查看Docker服务日志(最重要)
sudo journalctl -u docker.service --no-pager
# 查看最近N条日志
sudo journalctl -u docker.service --no-pager -n 50
# 实时查看日志
sudo journalctl -u docker.service -f
# 查看系统整体日志
sudo journalctl -xe二、配置文件检查
1. 配置文件位置和检查
# 检查Docker配置文件
cat /etc/docker/daemon.json
# 验证JSON格式是否正确
python3 -m json.tool /etc/docker/daemon.json
# 检查systemd配置
ls -la /etc/systemd/system/docker.service.d/
cat /etc/systemd/system/docker.service.d/*.conf
# 查看Docker服务配置
sudo systemctl show docker.service2. 手动启动调试
# 停止服务后手动启动(最有用的调试方法)
sudo systemctl stop docker.service docker.socket
sudo dockerd --debug
# 验证配置文件
sudo dockerd --validate三、系统资源检查
1. 磁盘空间和权限
# 检查Docker数据目录空间
df -h /var/lib/docker
# 检查Docker目录权限
ls -la /var/lib/docker/
# 修复权限(如需要)
sudo chown -R root:root /var/lib/docker
sudo chmod -R 755 /var/lib/docker2. 网络和端口检查
# 检查Docker相关端口
sudo netstat -tulpn | grep docker
sudo ss -tulpn | grep 2375
sudo ss -tulpn | grep 2376
# 检查代理端口(如有配置)
sudo netstat -tulpn | grep 8889四、常见问题解决步骤
1. 服务启动失败
# 重置失败状态
sudo systemctl reset-failed docker.service
sudo systemctl reset-failed docker.socket
# 重新启动
sudo systemctl start docker.service2. 配置文件错误
# 备份配置文件
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
# 临时移除配置文件测试
sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.temp
sudo systemctl restart docker
# 创建最小配置
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{}
EOF3. 网络/代理问题
# 测试网络连接
curl -I https://registry-1.docker.io/
# 测试代理(如有配置)
curl -x http://127.0.0.1:8889 -I https://registry-1.docker.io/
# 临时禁用代理
sudo mv /etc/systemd/system/docker.service.d/http-proxy.conf /etc/systemd/system/docker.service.d/http-proxy.conf.disabled
sudo systemctl daemon-reload
sudo systemctl restart docker五、完整排查流程
第一步:基础检查
sudo systemctl status docker.service
sudo journalctl -u docker.service --no-pager -n 20第二步:手动启动调试
sudo systemctl stop docker.service docker.socket
sudo dockerd --debug第三步:配置检查
cat /etc/docker/daemon.json
python3 -m json.tool /etc/docker/daemon.json第四步:资源检查
df -h /var/lib/docker
sudo systemctl status containerd第五步:网络检查
sudo netstat -tulpn | grep docker
curl -I https://registry-1.docker.io/六、常用修复命令
重装 Docker(最后手段)
# 完全卸载
sudo apt-get remove --purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
# 重新安装
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io清理 Docker 数据
# 停止Docker
sudo systemctl stop docker
# 清理数据(会删除所有容器和镜像)
sudo rm -rf /var/lib/docker/*
# 重启Docker
sudo systemctl start docker七、关键排查点总结
- 最重要命令:
sudo journalctl -u docker.service --no-pager和sudo dockerd --debug - 配置文件:检查
/etc/docker/daemon.json的 JSON 格式 - 依赖服务:确保
containerd正常运行 - 磁盘空间:确保
/var/lib/docker有足够空间 - 权限问题:检查 Docker 数据目录权限
- 网络代理:代理配置是否正确,代理服务是否运行
- 端口冲突:检查 Docker 默认端口是否被占用
记住:日志是最好的老师,几乎所有 Docker 问题都可以通过查看详细日志找到根本原因。