1. 动手之前,先确认CentOS版本和内核这些底层问题
1.1 在CentOS 7.x和Stream之间做选择
先说一个我踩过的坑。有次我拿到一台新服务器,看官方文档直接照搬CentOS 8的安装命令,结果yum源报错不说,连docker-ce的仓库都拉不下来。后来才意识到,CentOS 8停止维护之后,仓库地址全变了,网上大量教程还停留在旧版本阶段。
目前生产环境里最常见的组合是CentOS 7.9 + Docker CE,这套组合经过大量线上环境验证,社区资料最全,遇到问题基本都能搜到答案。CentOS 7.9的内核是3.10.0系列,Docker官方对这版内核有专门适配,overlay2存储驱动可以正常工作,iptables的兼容性也经过长期打磨。
CentOS Stream 9则不一样,虽然内核升级到了5.14以上,但对Docker CE的支持反而更别扭。主要原因在于CentOS Stream 9默认使用nftables作为防火墙后端,而Docker的网络模式(尤其是端口映射和容器间通信)对iptables的依赖很深,安装完Docker后经常出现容器网络不通的情况。如果你只是学习或者非生产环境,CentOS Stream 9可以玩,但真要部署业务,我还是建议老实使用CentOS 7.9。
另外还要注意系统架构问题。Docker要求64位系统,x86_64架构的兼容性最好,ARM架构(比如鲲鹏、飞腾)虽然也能装,但部分镜像没有ARM版本,或者运行时有性能损耗。用uname -m看一眼,返回x86_64就可以继续。
1.2 内核版本对Docker运行时的直接影响
很多新手忽略了一个关键点:Docker不是纯用户态软件,它依赖内核特性来隔离资源。cgroups(资源限制)、namespaces(进程隔离)、overlayfs(镜像分层)这些机制都跟内核版本强相关。
CentOS 7.x虽然内核版本号是3.10,但Red Hat在编译时给内核打了大量补丁,实际上对容器特性的支持比较完整。真正要注意的是,不要在内核版本很老的机器上强行安装新版Docker。举个例子,Docker 20.10之后对内核有一些新要求,如果uname -r显示内核低于3.10,建议先升级内核再装Docker,否则用docker info检查时会看到警告,甚至直接无法启动。
还有个容易忽略的点是SELinux。CentOS默认开启SELinux(Enforcing模式),Docker官方虽然支持SELinux,但在某些场景下(比如挂载数据卷时)会遇到权限限制。如果你对SELinux不熟悉,最简单的做法是把它设置为Permissive模式,命令是setenforce 0,然后修改/etc/selinux/config把SELINUX=enforcing改成SELINUX=permissive。当然,如果你的安全要求很高,可以在SELinux开启状态下跑通Docker,只是排查问题时多一个变量。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从yum源到docker run的完整安装链路
2.1 清理旧版本和基础依赖
安装新版本之前,先检查系统里有没有残留的旧版Docker或相关组件。不同版本的Docker组件名称不一样,老版本叫docker、docker-engine,新版本叫docker-ce。如果你不确定有没有装过,直接执行:
bash复制yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
系统会提示这些包不存在,没关系,这本来就是个清理动作,确保环境干净。
接着安装yum-utils和device-mapper-persistent-data,前者提供yum-config-manager命令,用来管理yum源,后者是Docker存储驱动依赖的底层工具。
bash复制yum install -y yum-utils device-mapper-persistent-data lvm2
lvm2是逻辑卷管理工具,Docker的devicemapper存储驱动会用到,虽然现在默认推荐overlay2,但装上有备无患。
2.2 配置docker-ce的yum源
这是整个安装过程中最容易出问题的环节。Docker官方源地址是https://download.docker.com/linux/centos/docker-ce.repo,但国内服务器直接访问这个地址经常超时或速度极慢,这时候就要用镜像站替换。
清华镜像站和阿里云的配置方式类似,以清华源为例:
bash复制yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
配置完务必执行yum makecache fast生成缓存。这里有个细节:如果你用的是CentOS 7,执行完yum-config-manager后会生成一个/etc/yum.repos.d/docker-ce.repo文件,打开看baseurl会是https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable,确认路径里带7就行。
还有一点,检查一下/etc/yum.repos.d/下的其他rep
