当在 CentOS 7 上安装 Docker 后遇到无法启动的问题时,可以按照以下步骤进行排查和解决:
sudo systemctl status docker
查看错误信息,常见的错误包括: - SELinux 冲突 - 存储驱动问题 - 防火墙冲突
如果错误与 SELinux 相关,可以尝试临时禁用 SELinux:
sudo setenforce 0
或者永久禁用(需重启生效):
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
或者配置 SELinux 允许 Docker 运行:
sudo yum install -y container-selinux
检查当前存储驱动:
sudo docker info | grep "Storage Driver"
如果是 devicemapper 相关错误,可以修改为 overlay2:
sudo vi /etc/docker/daemon.json
添加以下内容:
{
"storage-driver": "overlay2"
}
然后重启 Docker:
sudo systemctl restart docker
停止并禁用防火墙:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
或者开放 Docker 所需端口:
sudo firewall-cmd --permanent --zone=public --add-port=2375/tcp
sudo firewall-cmd --permanent --zone=public --add-port=2376/tcp
sudo firewall-cmd --reload
确保内核版本符合要求(3.10 或更高):
uname -r
如果内核版本过低,升级内核:
sudo yum install -y kernel kernel-devel
sudo reboot
如果以上方法无效,尝试完全卸载后重新安装:
# 卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 清理残留文件
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
# 重新安装
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker
sudo journalctl -xe
sudo journalctl -u docker.service
根据日志中的具体错误信息进行针对性解决。
成功启动后,运行测试容器验证:
sudo docker run hello-world
如果这些步骤仍不能解决问题,请提供具体的错误信息以便进一步诊断。