前言
最近在虚拟机的 CentOS 7 系统上安装 Docker,过程中踩了好几个典型的坑:sudoers 权限问题、yum 官方源失效、dnf 命令找不到、--nobest 参数报错...... 网上很多教程要么不针对 CentOS 7,要么步骤不全,导致新手跟着操作很容易卡住。今天把完整的安装流程和所有踩坑解决方案整理成一篇教程,帮大家一次性搞定 CentOS 7 上的 Docker 安装。
一、环境准备:先解决 sudo 权限问题
很多新手刚装完 CentOS 7,用普通用户执行 sudo 命令会遇到这个报错:
plaintext
用户 不在 sudoers 文件中。此事将被报告。
原因分析
普通用户默认没有管理员权限,需要手动把用户加入 sudoers 文件才能使用 sudo 命令。
解决步骤
-
切换到 root 用户(输入 root 密码登录)
su - root -
编辑
sudoers文件(必须用visudo命令,避免文件损坏)visudo -
找到这一行:
root ALL=(ALL) ALL在下方添加你的普通用户(比如你的用户是
xiong):xiong ALL=(ALL) ALL -
保存退出:按
Esc,输入:wq回车即可。 -
退出 root,切回普通用户测试权限:
exit sudo yum install -y yum-utils输入普通用户的密码,如果能正常执行,说明权限配置成功。
二、修复 CentOS 7 失效的 yum 源
CentOS 7 官方已经停止维护,原来的 mirror.centos.org 源地址已经无法访问,会出现这个报错:plaintext
Cannot find a valid baseurl for repo: base/7/x86_64
解决步骤:切换阿里云 vault 源
-
备份原来的源文件
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak -
下载阿里云 CentOS 7 专用 vault 源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo -
清理并重建 yum 缓存
sudo yum clean all sudo yum makecache
三、CentOS 7 专用 Docker 安装步骤
注意:CentOS 7 不要用 dnf 命令!

dnf 是 CentOS 8/Stream 才引入的包管理器,CentOS 7 默认只有 yum,强行用 dnf 会报 "找不到命令" 错误,全程用 yum 即可。
步骤 1:卸载旧版本(避免冲突)
sudo yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc
步骤 2:安装依赖工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
步骤 3:添加 Docker 阿里云 yum 源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
步骤 4:安装 Docker(解决 --nobest 参数报错)

网上很多教程会加 --nobest 参数,但 CentOS 7 自带的 yum 版本不支持这个参数,直接去掉即可:
# 直接安装最新兼容版本
sudo yum install -y docker-ce docker-ce-cli containerd.io
如果安装时提示依赖冲突,可以指定安装对 CentOS 7 兼容性最好的 20.x 系列版本:
# 查看可用的 Docker 版本
yum list docker-ce --showduplicates | sort -r
# 示例:安装 20.10.24 版本(可根据输出选择)
sudo yum install -y docker-ce-20.10.24-3.el7 docker-ce-cli-20.10.24-3.el7 containerd.io
四、启动 Docker 并验证安装
步骤 1:启动 Docker 服务并设置开机自启
# 启动服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 查看服务状态(显示 active (running) 即成功)
sudo systemctl status docker
步骤 2:配置普通用户免 sudo 使用 Docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 刷新组权限(或重启虚拟机)
newgrp docker
步骤 3:验证安装是否成功
# 查看 Docker 版本
docker --version
# 运行官方测试镜像(能正常拉取并打印 Hello World 即成功)
docker run hello-world

五、(可选)配置阿里云镜像加速
拉取国外镜像速度慢时,配置镜像加速提升下载速度:
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 docker
阿里云加速地址可以登录阿里云控制台,在 "容器镜像服务" 中获取个人专属地址。
六、常见问题排查
| 报错现象 | 原因 | 解决方案 |
|---|---|---|
用户不在 sudoers 文件中 |
普通用户无管理员权限 | 用 visudo 命令将用户加入 sudoers 文件 |
Cannot find a valid baseurl for repo |
CentOS 7 官方源失效 | 切换阿里云 vault 源 |
dnf: 找不到命令 |
CentOS 7 不支持 dnf 命令 | 全程使用 yum 命令 |
no such option: --nobest |
CentOS 7 的 yum 版本不支持该参数 | 去掉 --nobest 参数,直接安装 |
Failed to start docker.service: Unit not found |
Docker 未安装成功 | 检查 yum 源是否配置正确,重新安装 Docker |
总结
CentOS 7 安装 Docker 的核心要点:
- 先解决普通用户的 sudo 权限问题,否则所有管理员命令都无法执行;
- 必须更换 yum 源,否则无法下载任何软件包;
- 全程使用 yum 命令,不要用 CentOS 8 的 dnf 命令;
- 去掉
--nobest参数,直接安装兼容 CentOS 7 的 Docker 版本即可。