当Docker无法启动容器时,可能涉及多种原因。以下是系统化的排查指南和解决方案:
Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use
bash
# 查看占用端口的进程
sudo netstat -tulnp | grep :80
# 终止冲突进程或修改容器端口映射
docker run -p 81:80 nginx
Error response from daemon: failed to create task for container: failed to create shim task
overlay2
)配置异常。bash
# 检查存储驱动
docker info | grep "Storage Driver"
# 修改为overlay2(需在/etc/docker/daemon.json中配置)
{
"storage-driver": "overlay2"
}
bash
# 限制资源使用
docker run -m 512m --cpus=1 nginx
Error: No such image
或 Failed to download layer
。bash
# 删除并重新拉取镜像
docker rmi nginx && docker pull nginx
Permission denied
或 Cannot connect to the Docker daemon
。bash
# 将用户加入docker组
sudo usermod -aG docker $USER
# 重启Docker服务
sudo systemctl restart docker
avc: denied
日志(查看/var/log/audit/audit.log
)。bash
# 临时禁用SELinux
sudo setenforce 0
# 或添加SELinux规则
sudo ausearch -c 'docker' | audit2allow -M mypolicy
# 容器日志(即使未启动)
docker logs <container_id> --details 2>&1 | less
# Docker服务日志
journalctl -u docker.service -n 50 --no-pager
# 查看容器元数据
docker inspect <container_id> | grep -i "status\|error"
# 交互式启动并进入容器
docker run -it --entrypoint=/bin/sh nginx
# 清理无用数据
docker system prune -a
# 检查磁盘空间
df -h /var/lib/docker
sudo apt upgrade docker-ce
。/boot/cmdline.txt
(Raspberry Pi等)添加cgroup_enable=memory cgroup_memory=1
。docker logs
和 journalctl
。busybox
镜像启动简单容器。通过以上步骤,90%的启动问题可被定位并解决。若问题持续,建议提供完整错误日志进一步分析。