故障排查
本文档介绍 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 服务状态
- [ ] 查看容器日志
- [ ] 检查网络配置
- [ ] 检查存储空间
- [ ] 检查资源限制
- [ ] 查看系统日志
- [ ] 检查镜像完整性
- [ ] 验证配置文件