目录

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 相关的旧版本(比如 dockerdocker-clientdocker-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/