在 TencentOS Server 3.1 TK4(基于 CentOS Stream 8 / RHEL 8 兼容内核,由腾讯定制的国产化操作系统)上安装 Docker 需特别注意:官方 Docker 不直接支持 TencentOS(非标准 RHEL/CentOS),且 Docker CE 自 2023 年起已停止对 RHEL 8/CentOS 8 的 dnf 官方仓库支持(转为仅支持 RHEL 9+ 和特定云发行版)。但 TencentOS Server 3.1 TK4 实际基于 Linux kernel 4.18+ + userspace 类似 RHEL 8,具备运行 Docker 的基础条件。
✅ 正确、稳定、生产可用的安装方式如下(推荐方案):
✅ 推荐方案:使用 Docker 官方静态二进制包(Stable, 无依赖冲突)
✅ 优势:绕过包管理器兼容性问题,适配所有 Linux 发行版;✅ 无需启用 EPEL/PowerTools;✅ 避免与 TencentOS 自带的
podman/buildah冲突;✅ 易于升级/卸载;✅ 符合信创环境最小化原则。
步骤 1:前置检查与准备
# 1. 确认系统版本(确保是 TencentOS Server 3.1 TK4)
cat /etc/tencentos-release
# 输出应类似:TencentOS Server 3.1 (TK4) Kernel r on an m
# 2. 确保内核支持(≥4.18,TK4 默认满足)
uname -r # 应为 4.18.x 或更高(如 4.18.0-tlinux3-xxxx)
# 3. 启用必要内核模块(Docker 依赖 overlay2 & br_netfilter)
sudo modprobe overlay
sudo modprobe br_netfilter
# 永久加载(写入配置)
echo 'overlay' | sudo tee -a /etc/modules
echo 'br_netfilter' | sudo tee -a /etc/modules
# 配置 sysctl(启用 iptables 对桥接流量的处理)
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
步骤 2:下载并安装 Docker 静态二进制文件(推荐 v24.0.7 或 v25.0.3 LTS)
🔍 查看最新稳定版:https://download.docker.com/linux/static/stable/x86_64/
⚠️ 注意:不要使用docker-ceRPM 包(因 TencentOS 未被 Docker 官方 repo 支持,dnf install docker-ce会失败或依赖错误)
# 创建临时目录
mkdir -p ~/docker-install && cd ~/docker-install
# 下载 Docker 25.0.3(2024 年推荐的长期支持版,兼容性好)
sudo curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-25.0.3.tgz -o docker.tgz
# 解压到 /usr/local/bin
sudo tar xzvf docker.tgz -C /usr/local/bin --strip-components=1
# 验证二进制
docker --version # 应输出:Docker version 25.0.3, build xxxxx
步骤 3:配置 systemd 服务(关键!使 Docker 可开机自启)
# 创建 docker.service 文件
sudo tee /etc/systemd/system/docker.service <<'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=containerd.service
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
EOF
# 重载 systemd 配置
sudo systemctl daemon-reload
# 启动并设为开机自启
sudo systemctl enable --now docker
# 验证状态
sudo systemctl status docker # 应显示 active (running)
步骤 4:验证安装(含权限与网络)
# 1. 运行 hello-world(需 root 或 docker 组权限)
sudo docker run --rm hello-world
# 2. (可选)将当前用户加入 docker 组(避免每次加 sudo)
sudo usermod -aG docker $USER
newgrp docker # 刷新组(或重新登录)
# 3. 测试普通用户运行(退出终端重登后执行)
docker ps -a
❌ 不推荐的方案(说明原因)
| 方案 | 问题 |
|---|---|
dnf install docker-ce(从 Docker 官方 repo) |
TencentOS 未被 docker-ce.repo 支持,dnf 报错 No match for argument: docker-ce 或依赖解析失败(glibc、libseccomp 版本不匹配) |
使用 podman 替代(TencentOS 自带) |
Podman 是替代方案,但非 Docker 兼容(无 docker daemon,API 不完全一致),若业务强依赖 dockerd 则不可行 |
| 编译源码安装 | 复杂、易出错、不适用于生产环境,且 TencentOS 的构建工具链(如 go 版本)可能不满足要求 |
✅ 补充建议(生产环境)
-
镜像提速:配置国内镜像源(如腾讯云、中科大、阿里云)
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<'EOF' { "registry-mirrors": [ "https://mirror.ccs.tencentyun.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } } EOF sudo systemctl restart docker -
SELinux 注意:TencentOS 默认关闭 SELinux(
getenforce返回Disabled),如启用需额外策略,建议保持 disabled(符合多数容器部署规范)。 -
安全加固:生产环境建议启用
--userns-remap、限制容器资源、定期更新 Docker 版本。
✅ 总结:
在 TencentOS Server 3.1 TK4 上,使用官方静态二进制 + 手动 systemd 服务配置 是最可靠、兼容性最佳、且符合信创环境要求的 Docker 安装方式。整个过程无需修改系统源、不引入冲突依赖,10 分钟内可完成。
如需我为你生成一键安装脚本(含错误检查/日志),或适配 ARM64 架构(如 TK4 服务器为鲲鹏),欢迎继续提问!
云小栈