当使用yum安装Docker后启动失败,可能是由多种原因导致的。以下是系统性的排查和解决方案:
systemctl status docker
查看详细错误信息,这是解决问题的第一步。
journalctl -xe -u docker --no-pager
错误特征:failed to start daemon: error initializing graphdriver: driver not supported
解决方案:
# 编辑docker配置文件
vi /etc/docker/daemon.json
添加以下内容(根据你的文件系统选择):
{
"storage-driver": "devicemapper" # 或 overlay2, vfs等
}
然后重启服务:
systemctl restart docker
错误特征:/proc/sys/kernel/unprivileged_userns_clone
相关错误
解决方案:
# 加载必要的内核模块
modprobe overlay
modprobe br_netfilter
# 设置系统启动时自动加载
echo "overlay" >> /etc/modules-load.d/overlay.conf
echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
# 设置内核参数
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf
sysctl -p
错误特征:port is already allocated
解决方案:
# 查找占用端口的进程
netstat -tulnp | grep <端口号>
# 停止冲突服务或修改Docker监听端口
错误特征:permission denied
相关错误
临时解决方案:
setenforce 0
永久解决方案:
# 编辑SELinux配置文件
vi /etc/selinux/config
将SELINUX=enforcing
改为SELINUX=permissive
或SELINUX=disabled
如果以上方法无效,可以尝试完全卸载后重新安装:
# 卸载现有Docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 删除残留文件
rm -rf /var/lib/docker
rm -rf /etc/docker
# 重新安装
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
# 启动服务
systemctl start docker
确保你的系统满足Docker的最低要求:
- CentOS 7或8(64位)
- 内核版本3.10或更高(推荐4.x)
- uname -r
检查内核版本
检查Docker版本:
docker version
测试Docker是否正常工作:
docker run hello-world
如果问题仍然存在,请根据具体的错误信息进一步排查。