当 Docker 创建容器失败时,可以按照以下步骤排查和解决问题:
首先获取具体的错误提示(关键步骤):
docker logs <容器ID或名称> # 查看已创建容器的日志
docker run --rm <镜像名> # 测试运行并自动删除容器(--rm参数)
Unable to find image 'xxx:latest' locally
bash
docker pull <镜像名>:<标签> # 重新拉取镜像
docker images # 确认镜像是否存在
Bind for 0.0.0.0:8080 failed: port is already allocated
bash
netstat -tuln | grep 8080 # 检查宿主机端口占用
docker run -p 8081:80 ... # 改用其他端口
No space left on device
bash
docker system df # 查看Docker磁盘使用
docker system prune # 清理无用资源(镜像、容器等)
Permission denied
或 Cannot connect to the Docker daemon
bash
sudo usermod -aG docker $USER # 将用户加入docker组
newgrp docker # 刷新用户组
sudo systemctl restart docker # 重启Docker服务
Container killed due to out-of-memory
bash
docker run -m 512m ... # 限制内存为512MB
docker run --cpus=1 ... # 限制CPU核心数
Mounts denied
或 Invalid volume specification
bash
docker run -v /host/path:/container/path ...
Conflict. The container name "/xxx" is already in use
bash
docker rm -f <旧容器名> # 强制删除旧容器
docker run --name <新名称>... # 指定新名称
exec format error
或 kernel too old
bash
uname -m # 查看宿主机架构
docker inspect --format='{{.Architecture}}' <镜像名>
查看Docker守护进程日志:
journalctl -u docker.service # Systemd系统
cat /var/log/docker.log # 其他系统
启用详细日志:
docker run --log-level=debug ...
检查容器启动配置:
docker inspect <容器ID> | grep -i "error"
bash
sudo apt-get update && sudo apt-get upgrade docker-ce
bash
docker run --rm -it alpine sh
通过以上步骤,通常可以定位到具体原因。如果问题仍存在,请提供完整的错误信息以便进一步分析。