Docker 服务启动失败可能由多种原因导致,以下是最常见的故障原因及对应的解决方案:
Address already in use
或端口绑定失败bash
# 查看端口占用
sudo netstat -tulnp | grep <端口号>
# 停止冲突服务 或 修改Docker配置文件
sudo systemctl stop apache2
sudo systemctl restart docker
Failed to start Docker Application Container Engine
或存储驱动错误overlay2
但磁盘格式为vfat)df -h
检查)bash
# 检查存储驱动配置
docker info | grep "Storage Driver"
# 修改为兼容的驱动(如devicemapper)
sudo vi /etc/docker/daemon.json
json
{
"storage-driver": "devicemapper"
}
Permission denied
或 Got permission denied while trying to connect
docker
组/var/run/docker.sock
权限错误bash
# 将用户加入docker组
sudo usermod -aG docker $USER
# 重启服务并重新登录
newgrp docker
sudo systemctl restart docker
Failed to connect to containerd
或依赖项报错containerd
)未运行bash
# 检查依赖服务状态
systemctl status containerd
# 启动依赖服务
sudo systemctl start containerd
sudo systemctl enable containerd
Your kernel does not support cgroup
等内核错误overlay
、bridge-nf-call-iptables
)bash
# 检查内核版本
uname -r
# 加载内核模块
sudo modprobe overlay
sudo modprobe br_netfilter
Error starting daemon: invalid configuration
/etc/docker/daemon.json
格式错误bash
# 验证JSON格式
sudo jq . /etc/docker/daemon.json
# 临时恢复默认配置测试
sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.bak
sudo systemctl restart docker
通过日志定位具体原因:
# 查看Docker服务日志(Systemd)
journalctl -u docker.service -n 50 --no-pager
# 或直接查看Docker日志文件
cat /var/log/docker.log
sudo systemctl restart docker
sudo systemctl status docker -l
bash
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
iptables
/nftables
规则未拦截Docker网络sudo apt-get upgrade docker-ce
通过以上步骤,90%的启动问题可被解决。如果问题仍存在,请提供具体错误日志进一步分析。