CentOS Stream 8 安装 Docker(2025 最新实践)
本指南面向 CentOS Stream 8,在 2025 年可用的镜像与依赖路径基础上编写,解决常见的依赖缺失与仓库 404 问题。内容可直接复制到博客平台。
适用场景与要点
- 目标系统:CentOS Stream 8(非 CentOS Linux 8)
- 推荐源:国内镜像(示例使用阿里云)
- 依赖来源:BaseOS / AppStream / Extras / PowerTools + EPEL
- 安装策略:启用 Docker 官方仓库;安装时使用
--nobest
规避版本"过新"导致的依赖不匹配
1. 切换到可用镜像源(阿里云示例)
将系统现有
.repo
文件备份后,写入 BaseOS、AppStream、Extras、PowerTools 四个仓库配置。
bash
sudo mkdir -p /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2>/dev/null
# BaseOS
sudo tee /etc/yum.repos.d/CentOS-Stream-BaseOS.repo > /dev/null <<'EOF'
[baseos]
name=CentOS Stream 8 - BaseOS - Aliyun
baseurl=https://mirrors.aliyun.com/centos/8-stream/BaseOS/$basearch/os/
gpgcheck=0
enabled=1
EOF
# AppStream
sudo tee /etc/yum.repos.d/CentOS-Stream-AppStream.repo > /dev/null <<'EOF'
[appstream]
name=CentOS Stream 8 - AppStream - Aliyun
baseurl=https://mirrors.aliyun.com/centos/8-stream/AppStream/$basearch/os/
gpgcheck=0
enabled=1
EOF
# Extras
sudo tee /etc/yum.repos.d/CentOS-Stream-Extras.repo > /dev/null <<'EOF'
[extras]
name=CentOS Stream 8 - Extras - Aliyun
baseurl=https://mirrors.aliyun.com/centos/8-stream/extras/$basearch/os/
gpgcheck=0
enabled=1
EOF
# PowerTools(在 Stream 8 中常用以替代 CRB)
sudo tee /etc/yum.repos.d/CentOS-Stream-PowerTools.repo > /dev/null <<'EOF'
[powertools]
name=CentOS Stream 8 - PowerTools - Aliyun
baseurl=https://mirrors.aliyun.com/centos/8-stream/PowerTools/$basearch/os/
gpgcheck=0
enabled=1
EOF
sudo dnf clean all
sudo dnf makecache
2. 启用 EPEL 仓库
使用独立 RPM 安装,避免被无效仓库阻塞。
bash
sudo dnf install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
3. 安装 Docker 所需依赖
container-selinux
常来自 EPEL;iptables
与libcgroup
来自系统仓库。
bash
sudo dnf install -y iptables libcgroup container-selinux --enablerepo=epel
4. 添加 Docker 官方仓库并安装
bash
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker CE(使用 --nobest 以获得依赖匹配的版本组合)
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin --nobest
5. 启动与验证
bash
sudo systemctl enable --now docker
docker version
docker run hello-world
看到输出中包含:
Hello from Docker!
即表示安装成功。
6.(可选)将当前用户加入 docker 组
bash
sudo usermod -aG docker $USER
newgrp docker
7. 常见问题排查
7.1 CRB 仓库 404
-
在 CentOS Stream 8 下,请优先使用 PowerTools ,并禁用失效的 CRB:
bashsudo sed -i 's/^enabled=.*/enabled=0/' /etc/yum.repos.d/CentOS-Stream-CRB.repo 2>/dev/null || true
7.2 container-selinux
找不到
-
先确认 EPEL 已安装:
bashsudo dnf install -y epel-release || sudo dnf install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
-
重新刷新缓存并指定仓库安装:
bashsudo dnf clean all && sudo dnf makecache sudo dnf --enablerepo=epel install -y container-selinux
7.3 Unit file docker.service does not exist
- 说明 Docker 未正确安装或仓库不可用,请重走:第 4 步的仓库配置与安装命令;
- 确保
docker-ce
,docker-ce-cli
,containerd.io
均已安装成功;
7.4 dnf config-manager
不存在
bash
sudo dnf install -y dnf-plugins-core
8. 一键安装脚本(可选)
保存为
install_docker_stream8.sh
并执行bash install_docker_stream8.sh
。
bash
#!/usr/bin/env bash
set -euo pipefail
# 更换到阿里云镜像
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2>/dev/null || true
cat > /etc/yum.repos.d/CentOS-Stream-BaseOS.repo <<'EOF'
[baseos]
name=CentOS Stream 8 - BaseOS - Aliyun
baseurl=https://mirrors.aliyun.com/centos/8-stream/BaseOS/$basearch/os/
gpgcheck=0
enabled=1
EOF
cat > /etc/yum.repos.d/CentOS-Stream-AppStream.repo <<'EOF'
[appstream]
name=CentOS Stream 8 - AppStream - Aliyun
baseurl=https://mirrors.aliyun.com/centos/8-stream/AppStream/$basearch/os/
gpgcheck=0
enabled=1
EOF
cat > /etc/yum.repos.d/CentOS-Stream-Extras.repo <<'EOF'
[extras]
name=CentOS Stream 8 - Extras - Aliyun
baseurl=https://mirrors.aliyun.com/centos/8-stream/extras/$basearch/os/
gpgcheck=0
enabled=1
EOF
cat > /etc/yum.repos.d/CentOS-Stream-PowerTools.repo <<'EOF'
[powertools]
name=CentOS Stream 8 - PowerTools - Aliyun
baseurl=https://mirrors.aliyun.com/centos/8-stream/PowerTools/$basearch/os/
gpgcheck=0
enabled=1
EOF
dnf clean all -y
dnf makecache -y
# EPEL
dnf install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
# 依赖
dnf install -y iptables libcgroup container-selinux --enablerepo=epel
# Docker 官方仓库 + 安装
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin --nobest
# 启动并验证
systemctl enable --now docker
docker version || true
echo "Run: docker run hello-world"
版本与更新
- 文档更新时间:2025-10
- 适配对象:CentOS Stream 8(如为 CentOS Linux 8,建议迁移至 Rocky/Alma 8 再安装 Docker)