Skip to content

故障排查

本文档介绍 Docker 常见问题的诊断和解决方法。

容器无法启动

检查容器日志

sh
docker logs <container>
docker logs --tail 100 <container>

检查容器状态

sh
docker ps -a
docker inspect <container>

常见原因

  • 镜像不存在或损坏
  • 端口冲突
  • 卷挂载失败
  • 资源不足
  • 配置错误

网络问题

容器无法访问外部网络

sh
# 检查网络配置
docker network ls
docker network inspect bridge

# 检查 DNS 配置
docker run --rm alpine nslookup google.com

容器间无法通信

sh
# 检查是否在同一网络
docker network inspect <network>

# 检查容器网络连接
docker network connect <network> <container>

存储问题

磁盘空间不足

sh
# 查看磁盘使用
docker system df -v

# 清理未使用的资源
docker system prune -a

# 清理卷
docker volume prune

卷挂载失败

sh
# 检查卷是否存在
docker volume ls
docker volume inspect <volume>

# 检查权限
ls -la /var/lib/docker/volumes/

性能问题

容器资源使用过高

sh
# 查看资源使用
docker stats

# 检查资源限制
docker inspect <container> | grep -i resource

镜像拉取慢

sh
# 配置镜像加速器
# 编辑 /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io"
  ]
}

日志问题

日志文件过大

sh
# 配置日志轮转
# 编辑 /etc/docker/daemon.json
{
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

常用诊断命令

sh
# 查看系统信息
docker info

# 查看版本
docker version

# 查看事件
docker events

# 检查 Daemon 状态
systemctl status docker  # Linux

调试技巧

进入容器调试

sh
# 进入运行中的容器
docker exec -it <container> /bin/bash

# 如果容器没有 shell,使用 busybox
docker run -it --rm --pid=container:<container> \
  --net=container:<container> \
  busybox sh

查看容器进程

sh
# 查看容器进程
docker top <container>

# 查看容器详细信息
docker inspect <container>

故障排查清单

  • [ ] 检查 Docker 服务状态
  • [ ] 查看容器日志
  • [ ] 检查网络配置
  • [ ] 检查存储空间
  • [ ] 检查资源限制
  • [ ] 查看系统日志
  • [ ] 检查镜像完整性
  • [ ] 验证配置文件

由 BSFC Tech 提供技术支持