常见问题排查

Docker 常见问题的排查和解决方法


📋 目录


容器无法启动

问题诊断

# 查看容器日志
docker logs my-container
 
# 查看容器状态
docker ps -a
 
# 查看容器详细信息
docker inspect my-container

常见原因

  1. 端口被占用

    # 检查端口占用
    lsof -i :8080
    # 或
    netstat -tulpn | grep 8080
  2. 镜像不存在

    # 检查镜像
    docker images
    # 拉取镜像
    docker pull myapp:latest
  3. 资源不足

    # 检查系统资源
    docker stats

镜像拉取失败

问题诊断

# 查看详细错误信息
docker pull myapp:latest
 
# 检查网络连接
ping registry-1.docker.io

常见原因

  1. 网络问题

    # 配置镜像加速器
    # 编辑 /etc/docker/daemon.json
    {
      "registry-mirrors": [
        "https://docker.mirrors.ustc.edu.cn"
      ]
    }
  2. 认证失败

    # 重新登录
    docker login
  3. 镜像不存在

    # 检查镜像名称和标签
    docker search myapp

网络连接问题

问题诊断

# 检查容器网络
docker network inspect bridge
 
# 测试容器间连接
docker exec container1 ping container2

常见原因

  1. 网络配置错误

    # 检查网络配置
    docker network ls
    docker network inspect my-network
  2. 防火墙阻止

    # 检查防火墙规则
    iptables -L

存储空间问题

问题诊断

# 查看 Docker 空间使用
docker system df
 
# 查看详细空间使用
docker system df -v

清理方法

# 清理未使用的资源
docker system prune
 
# 清理所有未使用的资源(包括镜像)
docker system prune -a
 
# 清理数据卷
docker volume prune

权限问题

问题诊断

# 检查容器用户
docker exec my-container whoami
 
# 检查文件权限
docker exec my-container ls -la /app

解决方法

# 使用非 root 用户运行
docker run -u 1000:1000 myapp:latest
 
# 在 Dockerfile 中设置用户
USER appuser

📚 参考资源


相关笔记