CentOS安装Docker

2026-07-21 10:29:00
2694字
15分钟
在 CentOS 上安装 Docker,准确的说是安装 Docker Engine, 本文主要介绍如何在CentOS上安装Docker。

根据Docker官方的最新要求,CentOS 7、8 已不再被支持。目前官方推荐的安装版本是 CentOS Stream 9 和 CentOS Stream 10。无论选择哪个版本,安装Docker都需要满足以下两个基础条件:

  1. 操作系统架构: 必须是 64位 版本。
  2. 系统内核: 内核版本必须 不低于 3.10。可通过 uname -r 命令查看。

同时必须启用 centos-extras仓库,CentOS 8 以后版本该仓库默认启用,但在CentOS Stream 9 此仓库已更名为‌extras-common,也默认开启。如果您禁用了它,需要重新启用。

注意:
1 centos-extras是 CentOS 官方提供的一个‌补充软件仓库(Repository)‌,它的核心作用是:‌存放那些不属于核心 BaseOS / AppStream 仓库,但又被官方认可和维护的"额外"软件包。
2 在 CentOS Stream 9 中已更名为 ‌extras-common,但功能和centos-extras一样。
3 ContOS 8及其以前版本,仓库配置文件路径/etc/yum.repos.d/CentOS-Base.repo
4 ‌CentOS Stream 9及最新版本,仓库配置文件路径/etc/yum.repos.d/centos.repo

在动手安装之前,最好先确认一下系统版本,不同版本CentOS的centos-extras仓库名称和仓库配置主文件名存在差异。

  1. CentOS 8及其以前版本:

运行以下命令查看所有仓库,并在输出中寻找 extras 相关信息:

yum repolist all | grep extras

如果看到 enabled,说明它已是开启状态,无需进行任何操作。如果看到 disabled,则说明它当前被禁用了,可以按照下面的步骤来开启。

如果确认 centos-extras仓库是禁用状态,可以通过编辑其配置文件来启用。

编辑仓库配置文件:使用文本编辑器(如 vim)打开 CentOS-Base.repo 文件:

vim /etc/yum.repos.d/CentOS-Base.repo

修改配置参数:在文件中找到 extras 这一节,将其中的 enabled=0 修改为 enabled=1

[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1   # <--- 确保这里是 1

保存并退出: 在 vim 中,按 Esc 键,然后输入:wq并回车保存。

更新YUM缓存:为使改动生效,需要清理并重建YUM缓存:

yum clean all
yum makecache
  • 验证是否成功: 完成以上步骤后,可以再次运行检查命令来确认:
yum repolist all | grep extras

如果输出中显示 enabled,则说明 centos-extras 仓库已成功启用。现在,你就可以正常安装那些依赖于该仓库的软件包了。

  1. ‌CentOS Stream 9及最新版本

查看所有已启用的仓库,查看 extras-common 是否已开启。

dnf repolist enabled

如果 extras-common 已开启,输出中会包含类似:

repo id            repo name
baseos             CentOS Stream 9 - BaseOS
appstream          CentOS Stream 9 - AppStream
extras-common      CentOS Stream 9 - Extras Common    ← 这个
crb                CentOS Stream 9 - CRB

亦可以使用 dnf config-manager 查看:

dnf config-manager | grep -i extras
注意:
运行这个命令需要先安装 dnf-plugins-core 包。如果提示 dnf config-manager 找不到,可以先安装它:
sudo dnf install dnf-plugins-core

如果发现未开启,如何启用?

sudo dnf config-manager --set-enabled extras-common

或者直接编辑仓库配置文件:

sudo vi /etc/yum.repos.d/centos.repo

extras-common 段中的 enabled=0 改为 enabled=1

[extras-common]
name=CentOS Stream 9 - Extras packages
baseurl=https://mirror.stream.centos.org/SIGs/9-stream/extras/$basearch/extras-common
enabled=1

保存并退出: 在 vim 中,按 Esc 键,然后输入:wq并回车保存。

更新dnf缓存:为使改动生效,需要清理并重建dnf缓存:

dnf clean all
dnf makecache

完成以上步骤后,再次查询extras-common仓库状态:

dnf config-manager | grep -i extras

1. 各版本支持情况详解

  • CentOS Stream 9 / 10(官方推荐): 这是唯一官方支持且仍在维护的版本。安装前请确保 centos-extras 仓库已启用。CentOS Stream 是 Red Hat 的企业级Linux(RHEL)的上游开发版本。Docker 官方调整支持策略,是为了确保用户能在一个持续更新、有活跃社区和安全修复的平台上运行 Docker。
  • CentOS 7(已停止支持,强烈不推荐): CentOS 7 已于 2024年6月30日 正式停止维护,不再接收安全更新。虽然技术上仍可安装,但用于生产环境有严重安全风险。
  • CentOS 8(已停止支持,不推荐): CentOS 8 已于 2021年12月31日 停止维护。其官方软件源已不可用,可能导致安装失败。
  • CentOS 6(不支持): 因内核版本过低(低于3.10),无法满足Docker的运行要求。

2. 检查或卸载旧版本

在安装Docker Engine之前,你需要确保系统中没有旧版本的 Docker,如果存在旧版 Docker, 你需要卸载旧版本与安装依赖,避免安装新版本过程中出现安装包冲突问题。通过以下命令删除旧版Docker

sudo dnf remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-engine

3. 使用rpm仓库安装

在新主机上首次安装 Docker Engine 之前,需要先设置 Docker 仓库。之后,就可以从该仓库安装和更新 Docker 了。

  1. 建立Docker Engine仓库

安装dnf-plugins-core软件包(其中包含管理 DNF 存储库的命令)并设置Docker Engine仓库。

sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

这一步是添加 Docker 的官方软件源。为了提升在国内的下载速度,强烈推荐使用阿里云、腾讯云等国内镜像源。

  • 使用阿里云镜像源(推荐)
sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 使用Docker官方源(备选)
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装Docker Engine
  • 安装Docker包
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

此命令会安装 Docker,但不会启动 Docker。它还会创建一个组,但默认情况下不会向该组添加任何用户。

注意:
如果不想每次都用sudo,可以将当前用户加入docker用户组,然后重新登录。$USER是一个变量,指向当前用户名。
sudo usermod -aG docker $USER
  • 开机启动Docker引擎
sudo systemctl enable docker

这会将 Docker systemd 服务配置为在系统启动时自动启动。如果您不希望 Docker 自动启动,请使用以下命令:sudo systemctl start docker

  • 启动Docker引擎
sudo systemctl start docker
  1. 测试是否安装成功
sudo docker run hello-world

此命令下载测试镜像并在容器中运行。容器运行后,会打印确认信息并退出。你现在已经成功安装并启动了Docker Engine。

  1. 升级Docker Engine

要升级 Docker Engine,请按照上面的安装说明进行操作,选择要安装的新版本。

4. 从package进行安装

如果无法使用 Docker 的仓库安装 Docker Engine,您可以下载适用于您版本的rpm文件并手动安装。每次升级 Docker Engine 时,都需要下载新的文件。

  1. 访问 https://download.docker.com/linux/centos/ 并选择您的 CentOS 版本。然后浏览并下载您要安装的 Docker 版本对应的 .x86_64/stable/Packages/.rpm 文件。 例如:docker-ce-29.6.2-1.el10.x86_64.rpm
  2. 安装 Docker Engine,将以下路径更改为您下载 Docker 软件包的路径。
sudo dnf install https://download.docker.com/linux/centos/10/x86_64/stable/Packages/docker-ce-29.6.2-1.el10.x86_64.rpm

此命令会安装 Docker,但不会启动 Docker。它还会创建一个组,但默认情况下不会向该组添加任何用户。

注意:
如果不想每次都用sudo,可以将当前用户加入docker用户组,然后重新登录。$USER是一个变量,指向当前用户名。
sudo usermod -aG docker $USER
  • 开机启动Docker引擎
sudo systemctl enable docker

这会将 Docker systemd 服务配置为在系统启动时自动启动。如果您不希望 Docker 自动启动,请使用以下命令:sudo systemctl start docker

  • 启动Docker引擎
sudo systemctl start docker
  1. 测试是否安装成功
sudo docker run hello-world

此命令下载测试镜像并在容器中运行。容器运行后,会打印确认信息并退出。你现在已经成功安装并启动了Docker Engine。

  1. 升级Docker Engine

要升级 Docker Engine,请下载更新的软件包文件,然后重复安装过程,这次使用 dnf upgrade 而不是 dnf install,并指向新的文件路径。

5. 使用脚本进行安装

Docker 提供了一个便捷脚本https://get.docker.com/,用于以非交互方式将 Docker 安装到开发环境中。虽然不建议在生产环境中使用此便捷脚本,但它对于创建满足您需求的配置脚本非常有用。此外,您还可以参考使用仓库安装的步骤,了解如何使用软件包仓库进行安装。该脚本的源代码是开源的,您可以在 GitHub 上的 docker-install 仓库中找到它。

在本地运行从互联网下载的脚本之前,务必先进行检查。安装前,请先了解该便捷脚本的潜在风险和局限性:

  • 该脚本需要 root 权限才能运行。
  • 该脚本会尝试检测您的 Linux 发行版和版本,并为您配置软件包管理系统。
  • 该脚本不允许您自定义大多数安装参数。
  • 该脚本会在不征求确认的情况下安装依赖项和推荐组件。根据主机当前的配置,这可能会安装大量软件包。
  • 默认情况下,该脚本会安装 Docker、containerd 和 runc 的最新稳定版本。使用此脚本配置机器时,可能会导致 Docker 出现意外的主版本升级。请务必在测试环境中测试升级,然后再部署到生产系统。
  • 该脚本并非设计用于升级现有的 Docker 安装。如果使用该脚本更新现有安装,依赖项可能无法更新到预期版本,从而导致版本过时。
注意:
运行脚本前可预览脚本步骤。您可以使用 --dry-run 选项运行脚本,以了解脚本调用时将执行哪些步骤。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run

使用脚本安装示例

此示例从https://get.docker.com/下载脚本并运行它,以在 Linux 上安装最新稳定版本的 Docker:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>

您已成功安装并启动 Docker Engine。该服务在基于 Debian 的发行版上会自动启动。在 CentOS、Fedora 或 RHEL 等其他发行版上,您需要使用相应的命令手动启动它。如消息所示,默认情况下,非 root 用户无法运行 Docker 命令。

注意:
如果不想每次都用sudo,可以将当前用户加入docker用户组,然后重新登录。$USER是一个变量,指向当前用户名。
sudo usermod -aG docker $USER

使用便捷脚本后升级 Docker

如果您使用便捷脚本安装了 Docker,则应直接使用包管理器升级 Docker。重新运行便捷脚本没有任何好处。如果它尝试重新安装主机上已存在的软件仓库,则重新运行可能会导致问题。

6. 配置Docker镜像加速

具体配置方法,请查看Docker 镜像加速

7. 卸载Docker Engine

  1. 卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包:
sudo dnf remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
  1. 主机上的镜像、容器、卷或自定义配置文件不会自动删除。要删除所有镜像、容器和卷,请执行以下操作:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

您必须手动删除所有已编辑的配置文件。

最后更新时间: 2026-07-22 11:31:38
2022-2026 小紫念沁 版权所有