在CentOS上安装Docker需要严格遵循一系列步骤。首先要卸载旧版本并彻底清理残留,接着安装docker-ce、docker-ce-cli和containerd.io这三个组件。然后配置阿里云镜像源,启动服务后,通过docker info和docker run hello-world进行双重验证。最后,还需要配置镜像加速以及docker组权限。

docker 在 CentOS 上不是一键装完就完事的,装错组件、漏掉依赖、镜像源没配对,后面跑 docker run hello-world 会直接失败。下面按真实踩坑顺序说清楚怎么做。
卸载旧版 docker 或残留包(必须做)
CentOS 7/8 默认可能自带 docker(非 docker-ce),它和最新新版冲突,不卸载会导致 yum install docker-ce 报依赖错误或静默失败。
- 执行
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine - 删干净残留:运行
rm -rf /var/lib/docker /var/lib/containerd(注意:这会清空所有镜像、容器、卷) - 检查是否还有旧进程残留:
ps aux | grep docker,若有,kill -9掉再继续
安装 docker-ce、docker-ce-cli 和 containerd.io(三者缺一不可)
仅仅安装docker-ce是远远不够的。docker-ce-cli提供了docker命令本身,而containerd.io则是底层的容器运行时。如果缺少其中任何一个,docker version会显示客户端正常但服务器未找到,或者docker run会卡住不动。
- 先装依赖:
yum install -y yum-utils device-mapper-persistent-data lvm2 - 加仓库(推荐阿里云源,比最新快):
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo - 更新缓存:
yum makecache fast - 明确指定安装三个包:
yum install -y docker-ce docker-ce-cli containerd.io
启动服务并验证是否真正可用
systemctl start docker 成功不代表能用。常见假成功现象:命令返回无报错,但 docker info 报 Cannot connect to the Docker daemon。
- 启动并设开机自启:
systemctl start docker && systemctl enable docker - 检查服务状态:
systemctl status docker,确认 Active: active (running) 且没有 Failed 单元 - 验证运行时:
docker info | grep "Server Version|containerd",应看到版本号和containerd已启用 - 最后跑一次:
docker run --rm hello-world,输出 “Hello from Docker!” 才算闭环
镜像加速和权限问题(最容易被忽略的两处)
没配镜像加速,docker pull 经常超时;没加用户到 docker 组,普通用户每次都要 sudo docker,长期用很别扭。
- 配置国内镜像加速(编辑
/etc/docker/daemon.json):{ "registry-mirrors": ["https://,然后xxx.mirror.aliyuncs.com"] }systemctl daemon-reload && systemctl restart docker - 把当前用户加入
docker组:usermod -aG docker $USER,**必须重新登录 shell 或新开 terminal 才生效** - 验证权限:
docker ps不报 permission denied 就 ok
containerd.io 版本要和 docker-ce 匹配,不同大版本混装(比如 docker-ce-24.0 配 containerd.io-1.6)会导致守护进程起不来。装完后看 rpm -qa | grep docker 和 rpm -qa | grep containerd,确保主版本号一致。