当 Docker 无法正常启动时,可能涉及多个层面的问题。以下是常见的故障原因及对应的解决方案,按优先级和频率排序:
port already allocated
或 address in use
bash
# 查找占用端口的进程
sudo netstat -tulnp | grep <端口号>
# 终止冲突进程或修改容器端口映射
docker run -p <新端口>:<容器端口> ...
Failed to start docker.service: devicemapper
或 aufs
相关错误devicemapper/overlay2
)。bash
# 检查磁盘空间
df -h
# 清理Docker缓存
docker system prune -a
# 修改存储驱动(需编辑配置文件)
sudo vi /etc/docker/daemon.json
json
{
"storage-driver": "overlay2"
}
bash
sudo systemctl restart docker
Got permission denied
或 Cannot connect to the Docker daemon
docker
用户组。/var/run/docker.sock
权限错误。解决方案:
# 将用户加入docker组
sudo usermod -aG docker $USER
newgrp docker # 刷新组权限
# 修复sock文件权限
sudo chmod 666 /var/run/docker.sock
docker: command not found
或 Docker daemon is not running
解决方案:
# 重启服务(Linux)
sudo systemctl start docker
sudo systemctl enable docker
# 检查服务状态
sudo systemctl status docker
Your kernel does not support cgroup
或 Requires Linux 4.x+
cgroups
, iptables
)。解决方案:
# 升级内核(Ubuntu示例)
sudo apt update && sudo apt install linux-generic
# 加载内核模块
sudo modprobe overlay
sudo modprobe br_netfilter
ufw/iptables
)阻止流量。解决方案:
# 检查防火墙规则
sudo iptables -L -n
# 重置Docker网络
sudo systemctl restart docker
docker network prune
Error response from daemon: conflict
或 invalid reference format
解决方案:
# 删除损坏的镜像/容器
docker rm -f <容器ID>
docker rmi <镜像名>
# 重新拉取镜像
docker pull <镜像名>:<标签>
Hardware virtualization is disabled
或 Hyper-V not found
journalctl -u docker.service
(Linux)或 Docker Desktop 事件日志。docker --version
和 docker run hello-world
。containerd
、runc
等组件正常运行。通过系统性排查这些常见原因,90% 的 Docker 启动问题可以得到解决。如果问题仍存在,建议提供完整的错误日志进一步分析。