腾讯云服务器手动安装 Docker 记录:好记性不如烂笔头

双十一又到了,每年这个时候都是入手便宜云服务器的好时机。我的策略是每年换一家云服务商,这样总能以新用户身份享受最优惠的价格,嘿嘿。今年对比下来,发现企鹅家的新用户套餐真香,4 核 4G 配置一年只需 38 元,刚好我还是他家的新用户,果断准备开抢。
前面几天都是人肉去抢,结果往往是还没点进去就显示已抢光。没办法,只能上强度了,去网上找了个 JS 脚本自己再改了改。果然,科技改变效率,用脚本抢了 2 次就成功拿下。
抢到服务器后,本来想直接部署自己的小系统,结果发现通过脚本抢的这个服务器版本不带 Docker。想着那就自己动手安装吧,结果发现之前安装 Docker 的步骤已经忘得一干二净(虽然之前确实装过)。只好又去网上搜罗一圈步骤,磕磕绊绊折腾半天总算搞定。
后面转念一想,为啥不把这次的安装过程详细记录下来呢?一来能加深记忆,二来下次再忘了,直接看自己的文章多方便。所以就有了这篇笔记,纯纯为了给自己留档,也希望能帮到有同样需求的朋友~

1、连接服务器

由我的工作电脑是Windows ,刚好电脑上有PuTTY,我就用它连接云服务器了。

连上去之后,先看看系统信息,做到心中有数。

复制代码
// 查看系统发行版
cat /etc/os-releases 

输出内容:

复制代码
NAME="OpenCloudOS"
VERSION="9.4"
ID="opencloudos"
ID_LIKE="opencloudos"
VERSION_ID="9.4"
PLATFORM_ID="platform:oc9"
PRETTY_NAME="OpenCloudOS 9.4"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:opencloudos:opencloudos:9"
HOME_URL="https://www.opencloudos.org/"
BUG_REPORT_URL="https://bugs.opencloudos.tech/"

去网上查了一下:OpenCloudOS 是一个开源的、企业级的 Linux 操作系统发行版,由中国国内多家头部科技企业(包括腾讯、阿里、华为、中兴、京东、中科方德等)共同发起并维护,目标是打造一个稳定、高性能、安全、自主可控的服务器操作系统生态。

OpenCloudOS 9(对标 RHEL 9 / CentOS Stream 9),完全兼容 EL9(Enterprise Linux 9) 生态

  • 使用 dnf/yum 包管理
  • 支持 RPM 软件包
  • 系统服务由 systemd 管理

再去看看 CPU、内存等信息是否跟购买时一致。

复制代码
# 查看 CPU 型号、核心数、线程数
lscpu

# 查看内存总量、使用情况(人类可读)
free -h

# 查看详细内存信息
cat /proc/meminfo

# 查看磁盘分区和挂载情况
df -h

# 查看所有块设备(硬盘、分区、LVM 等)
lsblk

各个命令输出的具体信息有点多,就不全部贴出来了,对了一下,和购买时宣传的配置是一致的。

2、安装 Docker

2.1 升级所有包(可选)

复制代码
注意​ 
yum -y update:升级所有包同时也升级软件和系统内核;​ 
yum -y upgrade:只升级所有包,不升级软件和系统内核

2.2 卸载旧版本Docker(如有)

我这是新服务器,肯定没安装过。但为了教程的完整性,如果你之前安装过,可以执行下面命令进行卸载。

复制代码
yum remove docker  docker-common docker-selinux docker-engine

2.3 安装Docker依赖包

复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2

我执行的时候,系统提示这些包已经存在了,所以这一步可能不是必须的,但执行一下也无妨。

2.4 设置 yum 源

既然是企鹅云我想着就用企鹅的Docker仓库应该是最快。我也一并提供了 Docker 官方和阿里云的仓库地址。

复制代码
yum-config-manager --add-repo https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo (企鹅家仓库)

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)

我首先执行的是第一条腾讯仓库的命令。执行后,我想查看一下是否设置成功,并看看有哪些 Docker 版本可以安装。

查看repo是否添加成功

复制代码
yum repolist all

查看Docker版本

复制代码
yum list docker-ce --showduplicates | sort -r

就在这里,我遇到了一个小坑,执行命令后报错了:

复制代码
Errors during downloading metadata for repository 'docker-ce-stable':
  - Curl error (35): SSL connect error for https://download.docker.com/linux/centos/9/x86_64/stable/repodata/15785a63d2ef1d07302d019d57565000357f16c1421237558eba5342e218f36d-updateinfo.xml.zst [Recv failure: Connection reset by peer]
  - Curl error (35): SSL connect error for https://download.docker.com/linux/centos/9/x86_64/stable/repodata/9fe12bed8f871e1595bb2bb10c5fb7c4d283e61b0828109263f647ea99c7e878-primary.xml.zst [Recv failure: Connection reset by peer]
Error: Failed to download metadata for repo 'docker-ce-stable': Yum repo downloading error: Downloading error(s): repodata/9fe12bed8f871e1595bb2bb10c5fb7c4d283e61b0828109263f647ea99c7e878-primary.xml.zst - Cannot download, 
all mirrors were already tried without success; repodata/15785a63d2ef1d07302d019d57565000357f16c1421237558eba5342e218f36d-updateinfo.xml.zst - Cannot download, all mirrors were already tried without success

错误信息显示,系统试图从 download.docker.com 下载元数据,而不是企鹅的镜像地址,并且 centos/9 的路径找不到。

我排查后发现,虽然我添加的是企鹅云的仓库地址 https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo,但这个文件的内容指向的 baseurl 仍然是 https://download.docker.com/linux/centos/$releasever/$basearch/stable。这就导致了我的服务器(OpenCloudOS 9,$releasever 为 9)去访问官方的 CentOS 9 仓库,而官方可能已经不维护或者我的网络访问不到。相比之下,阿里云的仓库文件返回的内容就是其自己的仓库地址。

https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo 返回的内容如下:

复制代码
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://download.docker.com/linux/centos/$releasever/source/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://download.docker.com/linux/centos/$releasever/source/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

没办法我只能编辑一下,通过 VI 编辑一下

复制代码
# 1. 编辑文件
sudo vi /etc/yum.repos.d/docker-ce.repo

# 2. 按 i 进入插入模式
# 3. 全选删除(可选):
#    - 按 Esc → 输入 :%d → 回车(删除全部内容)
# 4. 粘贴新配置(如前面提供的腾讯云+centos8内容)
# 5. 按 Esc 退出插入模式
# 6. 输入 :wq 并回车,保存退出
# 7. 输入 :q! 不保存强制退出
# 8. 输入 :w 仅保存不退出
# 9. 输入 :q 退出(无修改时)

编辑后的内容为:

复制代码
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/$releasever/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/$releasever/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/gpg

修改后,再次执行 yum list docker-ce --showduplicates | sort -r 命令,就可以正常显示 Docker 的版本列表了

2.5 选择一个版本并安装:yum install docker-ce-版本号

这里我就选择了最新的一个版本

复制代码
sudo yum -y install docker-ce-3:29.0.2-1.el9

(请根据你查看到的实际版本号进行替换)

2.6 启动 Docker 并设置开机自启

复制代码
systemctl start docker
systemctl enable docker

2.7 查看 Docker 版本,验证安装

复制代码
docker version

如果能成功显示 Client 和 Server 的版本信息,就代表 Docker 已经安装并启动成功了。

我的输出如下:

复制代码
[root@VM-0-9-opencloudos ~]# docker version
Client: Docker Engine - Community
 Version:           29.0.2
 API version:       1.52
 Go version:        go1.25.4
 Git commit:        8108357
 Built:             Mon Nov 17 12:36:49 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          29.0.2
  API version:      1.52 (minimum version 1.44)
  Go version:       go1.25.4
  Git commit:       e9ff10b
  Built:            Mon Nov 17 12:33:39 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.1.5
  GitCommit:        fcd43222d6b07379a4be9786bda52438f0dd16a1
 runc:
  Version:          1.3.3
  GitCommit:        v1.3.3-0-gd842d771
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

到此,腾讯云上的Docker就安装完成了!

3、抢服务器的 JS 脚本(仅供学习参考)

最后,附上我之前用来抢服务器的 JS 脚本,有需要的同学可以自取。

复制代码
let interval = setInterval(() => {
    const ele = document
        .getElementsByClassName(
            "uno3-buy-card uno3-buy-card-normal uno3-buy-card-recom uno3-buy-card-seckill"
        )[0]
        .getElementsByClassName("uno3-buy-card__btn")[0];
    console.log(ele.innerText);
    // 配置选择弹层的底部
    const button1 = document.getElementsByClassName("uno3-dialog-footer");
    if (button1 && button1.length > 0) {
        // 高频点击定时器(每30ms点击一次)
        setInterval(() => {
            console.log("抢!!!");
            document
                .getElementsByClassName("uno3-dialog-footer-mobile")[0]
                .getElementsByClassName("uno3-button uno3-button--primary")[0]
                .click();
        }, 30);
        // 清除主定时器(停止主循环)
        clearInterval(interval);
        return;
    }
    if (ele.innerText != "添加提醒" && ele.innerText != "取消提醒") {
        ele.click();
    }
}, 50);

使用方法:

    1. 在抢购页面,按 F12 打开开发者工具(要先登录并实名认证)。
    2. 切换到 Console (控制台) 标签页。
    3. 将上述代码复制粘贴到控制台中,回车执行。
    4. 脚本会自动检测并点击购买按钮。

⚠️ 免责声明:

    • 本脚本仅为技术学习和交流使用。
    • 使用脚本可能违反某些网站的用户协议或相关规定。
    • 请在合法合规的前提下使用,使用者应自行承担因使用本脚本而产生的任何风险和责任,包括但不限于账号封禁、法律责任等。
    • 作者不对脚本的有效性、安全性及使用后果作任何担保和承诺。