根据Docker官方的最新要求,CentOS 7、8 已不再被支持。目前官方推荐的安装版本是 CentOS Stream 9 和 CentOS Stream 10。无论选择哪个版本,安装Docker都需要满足以下两个基础条件:
同时必须启用 centos-extras仓库,CentOS 8 以后版本该仓库默认启用,但在CentOS Stream 9 此仓库已更名为extras-common,也默认开启。如果您禁用了它,需要重新启用。
/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/centos.repo在动手安装之前,最好先确认一下系统版本,不同版本CentOS的centos-extras仓库名称和仓库配置主文件名存在差异。
运行以下命令查看所有仓库,并在输出中寻找 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 仓库已成功启用。现在,你就可以正常安装那些依赖于该仓库的软件包了。
查看所有已启用的仓库,查看 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
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
在安装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
在新主机上首次安装 Docker Engine 之前,需要先设置 Docker 仓库。之后,就可以从该仓库安装和更新 Docker 了。
安装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
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 列出仓库中可用的版本
dnf list docker-ce --showduplicates | sort -r
# 将<VERSION_STRING>替换成所需要的版本,然后执行下面命令进行安装
sudo dnf install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
此命令会安装 Docker,但不会启动 Docker。它还会创建一个组,但默认情况下不会向该组添加任何用户。
sudo usermod -aG docker $USER
sudo systemctl enable docker
这会将 Docker systemd 服务配置为在系统启动时自动启动。如果您不希望 Docker 自动启动,请使用以下命令:sudo systemctl start docker
sudo systemctl start docker
sudo docker run hello-world
此命令下载测试镜像并在容器中运行。容器运行后,会打印确认信息并退出。你现在已经成功安装并启动了Docker Engine。
要升级 Docker Engine,请按照上面的安装说明进行操作,选择要安装的新版本。
如果无法使用 Docker 的仓库安装 Docker Engine,您可以下载适用于您版本的rpm文件并手动安装。每次升级 Docker Engine 时,都需要下载新的文件。
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 usermod -aG docker $USER
sudo systemctl enable docker
这会将 Docker systemd 服务配置为在系统启动时自动启动。如果您不希望 Docker 自动启动,请使用以下命令:sudo systemctl start docker
sudo systemctl start docker
sudo docker run hello-world
此命令下载测试镜像并在容器中运行。容器运行后,会打印确认信息并退出。你现在已经成功安装并启动了Docker Engine。
要升级 Docker Engine,请下载更新的软件包文件,然后重复安装过程,这次使用 dnf upgrade 而不是 dnf install,并指向新的文件路径。
Docker 提供了一个便捷脚本https://get.docker.com/,用于以非交互方式将 Docker 安装到开发环境中。虽然不建议在生产环境中使用此便捷脚本,但它对于创建满足您需求的配置脚本非常有用。此外,您还可以参考使用仓库安装的步骤,了解如何使用软件包仓库进行安装。该脚本的源代码是开源的,您可以在 GitHub 上的 docker-install 仓库中找到它。
在本地运行从互联网下载的脚本之前,务必先进行检查。安装前,请先了解该便捷脚本的潜在风险和局限性:
--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 usermod -aG docker $USER
使用便捷脚本后升级 Docker
如果您使用便捷脚本安装了 Docker,则应直接使用包管理器升级 Docker。重新运行便捷脚本没有任何好处。如果它尝试重新安装主机上已存在的软件仓库,则重新运行可能会导致问题。
具体配置方法,请查看Docker 镜像加速
sudo dnf remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
您必须手动删除所有已编辑的配置文件。