常见问题排查
遇到问题不要慌,本文列出了常见问题和解决方法。
容器问题
容器立即退出
# 查看容器日志docker logs container_name
# 查看退出码docker inspect --format='{{.State.ExitCode}}' container_name
# 以交互模式运行调试docker run -it myapp sh容器无法访问
# 检查端口映射docker port container_name
# 检查容器是否运行docker ps
# 检查防火墙sudo ufw status权限问题
# 添加用户到 docker 组sudo usermod -aG docker $USERnewgrp docker
# 修复文件权限docker run -u $(id -u):$(id -g) myapp镜像问题
拉取镜像失败
# 检查网络连接docker pull hello-world
# 使用镜像加速# 编辑 /etc/docker/daemon.json{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}
# 重启 Dockersudo systemctl restart docker构建失败
# 不使用缓存重新构建docker build --no-cache -t myapp .
# 查看详细构建日志docker build --progress=plain -t myapp .网络问题
容器间无法通信
# 检查是否在同一网络docker network inspect network_name
# 确保容器使用自定义网络docker network create mynetworkdocker run --network mynetwork --name app1 myappdocker run --network mynetwork --name app2 myappDNS 问题
# 指定 DNS 服务器docker run --dns 8.8.8.8 myapp存储问题
磁盘空间不足
# 查看磁盘使用docker system df
# 清理未使用资源docker system prune -a --volumes
# 清理特定类型docker image prunedocker container prunedocker volume prune卷权限问题
# 以特定用户身份运行docker run -u $(id -u):$(id -g) -v $(pwd):/data myapp性能问题
容器运行缓慢
# 查看资源使用docker stats
# 增加资源限制docker run -m 2g --cpus 2 myapp构建缓慢
# 使用 .dockerignoreecho "node_modules" >> .dockerignore
# 使用 BuildKitDOCKER_BUILDKIT=1 docker build -t myapp .Docker Compose 问题
服务启动失败
# 查看详细日志docker compose logs service_name
# 验证配置docker compose config
# 重新创建容器docker compose up -d --force-recreate调试技巧
进入容器调试
# 进入运行中的容器docker exec -it container_name sh
# 使用 root 用户docker exec -u root -it container_name sh查看容器变化
# 查看容器修改的文件docker diff container_name复制文件调试
# 从容器复制文件docker cp container_name:/app/logs ./logs常用诊断命令
# 系统信息docker info
# 容器详细信息docker inspect container_name
# 网络详细信息docker network inspect network_name
# 卷详细信息docker volume inspect volume_name
# 查看事件docker events
# 查看进程docker top container_name最佳实践
- ✅ 始终查看日志
- ✅ 使用
docker inspect获取详细信息 - ✅ 定期清理未使用资源
- ✅ 使用健康检查
- ✅ 监控资源使用