努力
加油

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

在 TencentOS Server 3.1 (TOS 3.1) 上安装 Docker,其实并没有想象中那么复杂,因为 TOS 本身就是基于 Linux 内核深度优化的操作系统,且对容器化场景做了不少底层适配。

不过,为了避坑和保证稳定性,确实有几样“硬依赖”和“软环境”需要提前处理好。我直接给你列个清单,按优先级排好:

1. 系统基础依赖(必须项)

TOS 3.1 默认使用的是较新的内核版本,Docker 官方推荐的内核版本是 4.4+,而 TOS 3.1 的内核通常在 5.10 或更高(取决于你用的是标准版还是 LTS 版),所以内核兼容性完全没问题。

但你必须确保以下基础包已安装:

  • yum-utils:这是最关键的。它提供了 yum-config-manager 工具,用于添加 Docker 的官方 YUM 源。
    • 命令:sudo yum install -y yum-utils
  • device-mapper-persistent-data 和 lvm2:这两个是存储驱动(特别是使用 devicemapper 或 overlay2 时)所需的库。虽然现代 Docker 默认用 overlay2,但这两个包通常是作为依赖被拉进来的,手动预装更稳妥。
    • 命令:sudo yum install -y device-mapper-persistent-data lvm2

注意:如果你是在内网环境或离线服务器操作,这些 RPM 包需要单独下载并上传到服务器,然后使用 rpm -ivh 或 yum localinstall 安装。

2. 网络与源配置(关键步骤)

TOS 3.1 的默认 YUM 源里,通常不包含最新版的 Docker CE(社区版)。Docker 官方建议通过其提供的独立仓库来安装,以确保安全性和更新及时性。

你需要准备:

  • 稳定的网络访问权限:或者配置好内部镜像源(如阿里云、腾讯云内部的镜像站)。
  • Docker 的 YUM 源文件:
    • 去 Docker 官网获取适合 CentOS/RHEL/TOS 的 repo 文件。
    • 由于 TOS 兼容 RHEL/CentOS 8/9 系列,你可以直接使用为 CentOS 8 或 RHEL 8 设计的 repo 配置。
    • 命令示例(以 CentOS 8 为例):
      sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

腾讯云特供提示:如果你在腾讯云 CVM 上使用 TOS,强烈建议优先使用腾讯云提供的 TencentOS 专属 Docker 源。这能避免从国外源下载慢、中断的问题,并且可能与 TOS 的内核模块有更好的兼容性。你可以查阅腾讯云文档中关于“TOS 3.1 安装 Docker”的部分,通常会提供一个指向 mirrors.cloud.tencent.com 的 repo 地址。

3. 内核模块支持(隐性依赖)

Docker 运行依赖于几个核心的 Linux 内核特性:

  • overlayfs:Docker 默认的存储驱动 overlay2 需要内核支持 overlayfs。TOS 3.1 内核默认启用此模块。
  • cgroups v2:较新版本的 Docker(20.10+)开始逐步转向 cgroups v2。TOS 3.1 默认可能使用 cgroups v1 或混合模式。如果遇到问题,可能需要检查 /proc/sys/fs/binfmt_misc 等路径是否正常挂载。
  • iptables / nftables:Docker 需要管理网络规则。确保 firewalld 或 iptables-services 已安装,并且没有被过度限制导致 Docker 无法创建桥接网络。

常见坑点:有些用户会禁用 firewalld 直接用 iptables,这在 Docker 环境中是可以的,但要确保 iptables 服务处于活跃状态,否则 Docker 启动后容器间通信会出问题。

4. 安全与权限准备

  • SELinux:TOS 默认开启 SELinux。Docker 可以工作在 SELinux 模式下,但需要确保你的镜像和配置文件遵循 SELinux 策略。如果不确定,初期可以临时设置为 permissive 模式测试:

    sudo setenforce 0

    (生产环境建议保持 Enforcing,但需正确配置上下文。)

  • 非 root 用户运行:Docker 守护进程默认绑定 Unix socket,只有 root 用户可以访问。如果你想让普通用户也能运行 Docker 命令,需要创建 docker 组并将用户加入其中:

    sudo groupadd docker
    sudo usermod -aG docker $USER

    重要:修改组后,必须重新登录会话才能生效。

5. 推荐安装方式(针对 TOS 3.1)

不要直接从 EPEL 或系统默认源安装 docker 包,那些通常是旧版本(如 1.13 或 18.09),功能缺失严重。

正确姿势:

  1. 卸载可能存在的旧版本 Docker:

    sudo yum remove docker 
      docker-client 
      docker-client-latest 
      docker-common 
      docker-latest 
      docker-latest-logrotate 
      docker-logrotate 
      docker-engine
  2. 安装依赖:

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 设置稳定仓库(推荐使用腾讯云镜像提速):

    sudo yum-config-manager --add-repo https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo

    (注:这里用腾讯云的 CentOS 8 源,因为 TOS 3.1 二进制兼容)

  4. 安装最新稳定版 Docker Engine:

    sudo yum install -y docker-ce docker-ce-cli containerd.io
  5. 启动并设置开机自启:

    sudo systemctl start docker
    sudo systemctl enable docker
  6. 验证:

    sudo docker run hello-world

总结

在 TOS 3.1 上装 Docker,核心就三点:

  1. 装好 yum-utils 和相关设备映射库。
  2. 配置正确的 YUM 源(首选腾讯云内部源,次选 Docker 官方源)。
  3. 确保内核支持 overlay2 和网络桥接。

只要网络通畅、源配对了,整个过程也就几分钟的事。别去碰那些老旧的 docker-io 包,那是历史遗留问题,直接走 CE 通道就行。