故障排除指南
本指南帮助你诊断和解决在使用 Docker 时可能遇到的常见问题。按照问题类型分类,提供详细的故障排除步骤。
在寻求帮助之前,建议先收集系统信息和日志,这将有助于更快地定位和解决问题。
收集系统信息
使用以下命令收集 Docker 系统信息:
# 查看 Docker 版本信息
docker version
# 查看 Docker 系统信息
docker info
# 查看 Docker 日志
journalctl -u docker.service
检查容器状态
使用以下命令检查容器状态:
# 查看所有容器状态
docker ps -a
# 查看容器日志
docker logs [容器ID]
# 查看容器详细信息
docker inspect [容器ID]
常见问题分类
安装问题
Docker 安装和初始化相关问题
- 如果遇到权限错误,确保当前用户在 docker 用户组中:
sudo usermod -aG docker $USER newgrp docker
- 检查 Docker 守护进程状态:
sudo systemctl status docker sudo systemctl start docker sudo systemctl enable docker
网络问题
容器网络连接和通信问题
- 检查 Docker 网络配置:
# 查看网络列表 docker network ls # 检查网络详情 docker network inspect bridge
- 修改 Docker 守护进程配置:
# 编辑配置文件 sudo nano /etc/docker/daemon.json { "dns": ["8.8.8.8", "8.8.4.4"] }
存储问题
磁盘空间和数据卷相关问题
- 清理未使用的 Docker 资源:
# 清理未使用的容器、网络、镜像 docker system prune -a # 查看 Docker 磁盘使用情况 docker system df
- 检查数据卷状态:
# 列出所有数据卷 docker volume ls # 检查数据卷详情 docker volume inspect [卷名]
性能问题
容器资源使用和性能相关问题
- 查看容器资源使用情况:
# 查看容器资源统计 docker stats # 查看容器进程 docker top [容器ID]
- 设置容器资源限制:
# 限制 CPU 和内存使用 docker run -d --cpus=".5" --memory=512m nginx
镜像问题
镜像拉取和构建相关问题
- 检查镜像仓库配置:
# 验证镜像仓库连接 docker login # 使用镜像加速器 sudo nano /etc/docker/daemon.json { "registry-mirrors": ["https://mirror.ccs.tencentyun.com"] }
- 检查 Dockerfile 和构建上下文:
# 使用构建缓存 docker build --no-cache -t myapp . # 查看构建历史 docker history [镜像ID]
安全问题
容器安全和访问控制问题
- 配置访问控制:
# 以非 root 用户运行容器 docker run -d --user 1000:1000 nginx # 限制容器功能 docker run -d --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
- 扫描镜像漏洞:
# 使用 Docker Scan docker scan [镜像名] # 查看镜像详细信息 docker inspect [镜像ID]
常见错误信息
运行时错误
常见的容器运行时错误及解决方案
Error response from daemon: conflict
容器名称冲突,删除同名容器或使用其他名称。
Error response from daemon: port is already allocated
端口被占用,更换端口或停止占用端口的进程。
Error response from daemon: OCI runtime create failed
容器创建失败,检查容器配置和系统资源。
配置错误
常见的配置相关错误及解决方案
Error response from daemon: invalid reference format
镜像名称格式错误,检查镜像名称语法。
Error response from daemon: manifest unknown
镜像不存在或标签错误,检查镜像名称和标签。
Error response from daemon: driver failed programming external connectivity
网络配置错误,检查防火墙和网络设置。
最佳实践建议
预防措施
预防常见问题的最佳实践
- 定期备份重要数据和配置
- 监控容器资源使用情况
- 使用资源限制避免单个容器影响整体系统
- 保持 Docker 和镜像的更新
- 使用 docker-compose 管理多容器应用
维护建议
日常维护的最佳实践
- 定期清理未使用的容器和镜像
- 使用数据卷持久化重要数据
- 配置日志轮转避免日志占用过多空间
- 定期检查安全更新
- 保持良好的镜像命名和标签管理