1. 环境准备与系统检查
在CentOS 7.9系统上安装Docker前,需要确保系统环境满足基本要求。我通常会先执行以下检查步骤:
- 确认系统版本:
cat /etc/redhat-release预期输出应显示"CentOS Linux release 7.9.2009"或类似版本信息。
- 检查内核版本(需3.10或更高):
uname -r- 验证yum源可用性:
yum repolist重要提示:如果系统是新安装的,建议先执行
yum update -y更新所有软件包。我在实际运维中发现,未更新的系统经常会出现依赖冲突问题。
2. 卸载旧版本Docker
即使系统没有安装过Docker,执行清理操作也是个好习惯。以下是完整的清理流程:
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 /var/lib/containerd3. 安装必要工具包
CentOS 7需要先安装基础工具集:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2这些工具的作用分别是:
- yum-utils:提供yum-config-manager等实用工具
- device-mapper-persistent-data和lvm2:Docker存储驱动依赖
4. 设置Docker仓库
官方推荐使用仓库安装而非rpm包,便于后续升级:
- 添加官方仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo- (可选)启用edge和test仓库:
sudo yum-config-manager --enable docker-ce-edge sudo yum-config-manager --enable docker-ce-test国内用户建议配置镜像加速,后文会专门说明。
5. 安装Docker引擎
现在可以正式安装Docker了:
sudo yum install -y docker-ce docker-ce-cli containerd.io如果要安装特定版本(比如20.10.7):
sudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io查看可用版本列表:
yum list docker-ce --showduplicates | sort -r6. 启动并验证Docker
安装完成后需要启动服务:
sudo systemctl start docker sudo systemctl enable docker验证安装是否成功:
sudo docker run hello-world预期会看到欢迎信息和Docker的基本说明。
7. 配置镜像加速(国内用户)
国内访问Docker Hub速度较慢,建议配置镜像加速器:
- 创建或修改daemon.json:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://<你的镜像加速地址>.mirror.aliyuncs.com"] } EOF- 重新加载配置:
sudo systemctl daemon-reload sudo systemctl restart docker8. 非root用户权限配置
默认需要sudo才能执行docker命令,可以通过以下方式让普通用户直接使用:
sudo usermod -aG docker $USER然后需要重新登录使配置生效。
9. 常见问题排查
9.1 启动失败:内核不支持
如果遇到"Your kernel does not support cgroup..."错误,说明内核版本太旧。解决方案:
- 升级内核:
sudo yum install -y kernel-lt- 修改grub配置后重启:
sudo grub2-set-default 0 sudo reboot9.2 存储驱动问题
如果/dev/mapper空间不足,可以修改存储驱动为overlay2:
sudo tee /etc/docker/daemon.json <<-'EOF' { "storage-driver": "overlay2" } EOF9.3 防火墙配置
如果容器网络不通,可能需要调整防火墙规则:
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0 sudo firewall-cmd --permanent --zone=trusted --add-port=4243/tcp sudo firewall-cmd --reload10. 后续维护建议
- 定期清理无用镜像和容器:
docker system prune -a- 监控磁盘使用情况:
docker system df- 升级Docker版本:
sudo yum update docker-ce在实际生产环境中,我建议将Docker数据目录迁移到独立分区,避免系统盘被日志和镜像占满。可以通过修改daemon.json中的"data-root"配置实现。