在 TencentOS Server 3.1(基于 CentOS 8/RHEL 8 兼容内核,但为腾讯定制的国产操作系统,内核版本通常为 4.19+,采用 dnf/yum 8 包管理)上安装 Docker,官方不直接支持 Docker CE(社区版),因其已停止对 CentOS 8/RHEL 8 的官方支持(Docker CE 自 2023 年底起正式弃用对 RHEL 8/CentOS 8 的仓库支持),而 TencentOS Server 3.1 的生命周期和软件生态与 RHEL 8 高度对齐。
不过,仍可通过以下合规、稳定且推荐的方式安装 Docker(实际部署中建议优先考虑 containerd + runc 或 Podman,但若必须使用 Docker 引擎,可按如下准备):
✅ 一、前提依赖准备(必须项)
| 类别 | 依赖项 | 说明 | 安装命令 |
|---|---|---|---|
| 基础工具 | dnf, curl, wget, tar, gzip |
包管理与下载解压工具 | sudo dnf install -y dnf curl wget tar gzip |
| 内核模块支持 | kernel-modules-extra |
提供 overlay, br_netfilter, ip_tables, iptable_nat, nf_nat, nf_conntrack 等关键模块(TencentOS 3.1 默认已启用 overlay,但仍需确认) |
sudo dnf install -y kernel-modules-extra |
| 系统服务管理 | systemd(已默认启用) |
Docker 依赖 systemd 管理服务 | ✔️ 默认满足 |
| 用户权限 | sudo 权限用户(非 root 直接运行) |
建议将普通用户加入 docker 组(安装后配置) |
— |
🔍 验证内核模块是否加载:
lsmod | grep -E "(overlay|br_netfilter|nf_nat|nf_conntrack)" # 若未加载,手动加载并设开机启用: sudo modprobe overlay br_netfilter nf_nat nf_conntrack echo 'overlay' | sudo tee -a /etc/modules-load.d/docker.conf echo 'br_netfilter' | sudo tee -a /etc/modules-load.d/docker.conf
✅ 二、关键内核参数配置(必需)
Docker 要求启用 IPv4 转发及桥接流量处理(尤其用于容器网络):
# 启用 IPv4 转发 & 桥接流量过滤
cat <<EOF | sudo tee /etc/sysctl.d/99-docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 生效配置
sudo sysctl --system
✅ 验证:sysctl net.ipv4.ip_forward 应返回 1
✅ 三、存储驱动兼容性准备(重要!)
TencentOS Server 3.1 默认文件系统为 XFS(推荐)或 ext4。
Docker 推荐使用 overlay2 存储驱动(要求内核 ≥ 4.0 + XFS 支持 d_type=true):
# 检查根文件系统是否支持 d_type(overlay2 必需)
xfs_info / | grep -o "ftype=1" # XFS 下应输出 ftype=1
# 或对 ext4:
sudo dumpe2fs -h / | grep -i "file type" # 应显示 "Filesystem features: .* filetype"
# 若不满足,需重新格式化(生产环境慎用!)
💡 TencentOS Server 3.1 默认安装即满足
overlay2要求(4.19+ 内核 + XFS ftype=1),无需额外操作。
✅ 四、替代方案推荐(强烈建议)
由于 Docker CE 官方已停止维护 RHEL 8/CentOS 8/TencentOS 3.x 的 RPM 仓库,直接 dnf install docker-ce 将失败(404)。可行路径有:
| 方案 | 说明 | 推荐度 | 备注 |
|---|---|---|---|
| ✅ 方案1:使用 containerd(推荐) | TencentOS 3.1 自带 containerd(预装或 dnf install containerd),配合 runc 和 nerdctl(Docker CLI 兼容)即可替代 Docker 引擎 |
⭐⭐⭐⭐⭐ | sudo dnf install -y containerd runc;sudo systemctl enable --now containerd;再安装 nerdctl(GitHub release) |
| ✅ 方案2:使用 Podman(无守护进程,rootless 友好) | Red Hat 主推,完全兼容 Docker CLI 语法,TencentOS 3.1 官方源原生支持 | ⭐⭐⭐⭐☆ | sudo dnf install -y podman podman-docker(后者提供 docker 命令软链) |
| ⚠️ 方案3:手动安装 Docker CE(不推荐) | 下载适用于 centos/8 的旧版 .rpm(如 docker-ce-20.10.24-3.el8),但存在安全更新缺失、cgroup v2 兼容性风险 |
⚠️ | 仅限测试环境,不建议生产使用 |
✅ 五、其他注意事项
- ❌ 禁用 SELinux? → 不推荐关闭! TencentOS 3.1 的 SELinux 策略已适配容器运行(如
container-selinux包)。保持enforcing模式,必要时用setsebool调整(如container_use_ceph)。 - 📦 镜像提速:配置国内镜像源(如腾讯云镜像
https://mirror.tencent.com/docker-ce)需注意该源已停止同步,建议改用阿里云或中科大镜像(需手动配置/etc/docker/daemon.json)。 - 🔐 安全加固:启用
userns-remap、限制 capabilities、使用--read-only等,符合等保/密评要求。
✅ 总结:最小必要准备清单
| 项目 | 是否必需 | 操作 |
|---|---|---|
kernel-modules-extra 包 |
✅ 是 | dnf install kernel-modules-extra |
overlay & br_netfilter 模块加载 |
✅ 是 | modprobe + /etc/modules-load.d/ |
sysctl 开启 ip_forward 和桥接过滤 |
✅ 是 | /etc/sysctl.d/99-docker.conf |
文件系统支持 d_type(XFS ftype=1) |
✅ 是 | 默认满足,建议验证 |
使用 containerd 或 podman 替代 Docker CE |
✅ 强烈推荐 | dnf install containerd podman |
如需具体安装 containerd + nerdctl 或 podman 的完整步骤(含 daemon 配置、镜像提速、rootless 设置),我可立即为您生成详细命令清单。欢迎继续提问! 🐳
云小栈