Linux Centos、OpenCloud OS 安装 docker 教程
之前在给公司的 OpenCloud OS 服务器部署 Docker 时,因为没卸载旧版本的 docker-engine,导致安装一直报错;后来装 CentOS 系统的 Docker ,又遇到镜像拉取速度慢的问题。
这两个系统都是基于 RHEL 架构,安装步骤大同小异,但细节上的坑不少。
今天就把这两个系统安装 Docker 的完整流程整理分享出来,从前期准备、卸载旧版本,到安装配置、验证启动,每一步都标了细节提示,以及遇到过的高频问题解决方案,
希望本篇文章对大家有所帮助
前期准备
CentOS 和 OpenCloud OS 都属于类 RHEL 系统,Docker 官方对这两类系统的支持比较完善,但有两个核心前提要先确认,避免后续踩坑:
-
系统版本要求:CentOS 需 7.0 及以上版本(推荐 7.9 或 8.x),OpenCloud OS 需 8.4 及以上版本(官方推荐稳定版);
-
内核版本要求:Docker 对内核有最低要求,执行
uname -r查看,内核版本需 ≥ 3.10 (比如 CentOS 7 默认内核 3.10.0-1160.el7.x86_64 就符合); -
权限说明:所有安装命令都需要 root 权限,要么用
sudo前缀,要么直接切换到 root 用户(执行su -输入密码即可)。
CentOS 8 之后官方停止维护,建议用 CentOS Stream 或 OpenCloud OS(华为开源的企业级系统,兼容性和稳定性都不错);两个系统的安装步骤90%一致,差异点会单独标注。
详细安装步骤如下:
一、卸载旧版本(关键)
如果系统之前装过 Docker 相关的旧版本(比如 docker、docker-client、docker-engine),必须先卸载,否则会出现依赖冲突。执行以下命令一键卸载:
# 卸载旧版本组件
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/containerd如果提示“没有可卸载的软件包”,说明系统是干净的,直接进行下一步即可。
二、配置 Docker 官方仓库
先安装依赖包(用于支持 HTTPS 仓库),然后添加 Docker 官方 GPG 密钥,最后配置仓库地址。这一步两个系统完全一致:
# 1. 安装依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 2. 设置 Docker 官方仓库(推荐,稳定)
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# (可选)如果官方仓库访问慢,可替换为阿里云镜像仓库
# sudo yum-config-manager \
# --add-repo \
# http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo执行完成后,可通过 yum repolist 查看仓库是否配置成功,能看到 docker-ce-stable 相关的仓库信息就说明没问题。
三、安装 Docker 引擎(核心)
Docker 引擎包含 docker-ce(社区版,免费)、docker-ce-cli(命令行工具)和 containerd.io(容器运行时),执行以下命令安装最新稳定版:
# 安装最新稳定版 Docker 引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io
# (可选)安装指定版本(如果需要版本兼容)
# 1. 先查看可安装的版本:yum list docker-ce --showduplicates | sort -r
# 2. 安装指定版本,比如 docker-ce-24.0.7.ce-1.el7.x86_64
# sudo yum install -y docker-ce-24.0.7 docker-ce-cli-24.0.7 containerd.io差异:如果是 OpenCloud OS 8.x ,可能会提示 containerd.io 版本冲突,此时需要先安装指定版本的 containerd.io,再装 Docker :
# OpenCloud OS 8.x 解决 containerd.io 冲突问题
sudo yum install -y https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.6.24-3.1.el8.x86_64.rpm
# 再安装 Docker 引擎
sudo yum install -y docker-ce docker-ce-cli四、启动 Docker 并设置开机自启
安装完成后,Docker 默认是未启动状态,需要手动启动并设置开机自启,确保服务器重启后 Docker 能自动运行:
# 启动 Docker 服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 验证启动状态(出现 active (running) 说明启动成功)
sudo systemctl status docker如果执行 systemctl status docker 后,看到绿色的“active (running)”,说明 Docker 已经正常启动了。
五、验证安装
启动后建议跑一个官方的 hello-world 镜像,验证 Docker 能否正常拉取镜像并运行容器:
# 拉取并运行 hello-world 镜像
sudo docker run hello-world如果输出“Hello from Docker!”相关的内容,说明 Docker 从仓库拉取镜像、创建容器、运行容器的全流程都正常,安装成功!
六、配置镜像加速
强烈推荐,要不然 docker 下载依赖很慢,可以解决 docker 依赖下载慢、docker 依赖下载失败错误等问题
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.3822334.xyz",
"https://docker.1panel.live"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker可以在配置里加上阿里云、网易的镜像加速器
常见问题
Q1. 安装时提示“no match for argument: docker-ce”?
原因:Docker 仓库配置错误,或者仓库没有同步到对应版本的包。
解决:
① 重新执行“配置 Docker 官方仓库”的步骤,确保命令没有输错;
② 如果是 CentOS 8,可能是默认的 mirror.centos.org 仓库不可用,替换为阿里云镜像仓库(步骤见前文“配置仓库”的可选命令);
③ 执行 sudo yum clean all && sudo yum makecache 清理缓存后再安装。
Q2. Docker 启动失败,提示“Job for docker.service failed because the control process exited”?
原因:最常见的是 daemon.json 配置文件格式错误(比如少写逗号、引号不匹配)。
解决:
① 执行 sudo journalctl -u docker.service 查看详细错误日志,能准确定位问题;
② 如果是配置文件错误,删除或修正 /etc/docker/daemon.json 文件,重新执行 sudo systemctl restart docker;
③ 若日志提示“端口被占用”,检查是否有其他容器运行时(如 containerd 旧版本),卸载后重启。
Q3. 执行 docker run 时提示“permission denied”?
原因:当前用户没有 Docker 操作权限,默认只有 root 用户能执行 Docker 命令。
解决:
① 临时方案:每次执行命令加 sudo 前缀;
② 永久方案:将用户添加到 docker 用户组,执行以下命令:
# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER
# 注销重新登录,让权限生效
exit重新登录后,执行 docker run hello-world 不用加 sudo 也能运行
Q4. 拉取镜像时提示“net/http: TLS handshake timeout”?
原因:网络问题导致无法连接 Docker Hub ,或者没有配置国内镜像加速。
解决:
① 先检查网络是否能访问外网(执行 ping www.baidu.com 测试);
② 配置国内镜像加速(步骤见前文“进阶优化”部分);
③ 如果是服务器有防火墙或代理,需要开放 Docker 相关端口(默认 2375/2376),或配置代理参数。
Q5. 安装报错:nothing provides container-selinux >= 2:2.74 needed
报错如下:
Last metadata expiration check: 0:00:44 ago on Sun 22 Jun 2025 03:08:39 PM CST.
Error:
Problem: conflicting requests
- nothing provides container-selinux >= 2:2.74 needed by docker-ce-24.0.7.ce-1.el7.x86_64 from docker-ce-stable
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)这是因为 OpenCloudOS 9 缺少 container-selinux 依赖包造成的。OpenCloudOS 9 默认源中可能没有包含 Docker CE 所需的 SELinux 策略模块
以下是解决方法:优先尝试 OpenCloudOS 官方仓库安装
sudo dnf update -y
sudo dnf install -y docker # OpenCloudOS 官方仓库可能已适配依赖总结
CentOS 和 OpenCloud OS 安装 Docker 的核心流程一致,主要差异集中在 containerd.io 版本兼容性和仓库配置上,最后总结两个关键点,帮大家少走弯路:
-
版本选择:CentOS 优先选 7.9 (稳定且社区资源多),OpenCloud OS 选最新稳定版(华为官方维护,企业级场景更推荐);
-
避坑关键:安装前必卸载旧版本,配置仓库后必清理缓存,启动失败必查日志(
journalctl -u docker.service); -
优化必做:国内环境一定要配置镜像加速,频繁操作 Docker 建议用 GO 工具或脚本简化状态检查。
如果是第一次安装,建议一步步复制命令执行,不要跳步骤;
如果遇到其他问题,欢迎在评论区留言,我会把解决方案补充进去~
版权声明
未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!
本文原文链接: https://fiveyoboy.com/articles/linux-install-docker/
备用原文链接: https://blog.fiveyoboy.com/articles/linux-install-docker/