加油
努力

使用TencentOS Server 3.1时,安装Docker需要提前准备哪些依赖?

在 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 + runcPodman,但若必须使用 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),配合 runcnerdctl(Docker CLI 兼容)即可替代 Docker 引擎 ⭐⭐⭐⭐⭐ sudo dnf install -y containerd runcsudo 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) ✅ 是 默认满足,建议验证
使用 containerdpodman 替代 Docker CE ✅ 强烈推荐 dnf install containerd podman

如需具体安装 containerd + nerdctlpodman 的完整步骤(含 daemon 配置、镜像提速、rootless 设置),我可立即为您生成详细命令清单。欢迎继续提问! 🐳

云服务器