努力
加油

腾讯云CVM实例上Ubuntu系统配置Docker环境的方法是什么?

在腾讯云 CVM(云服务器)上部署 Ubuntu 系统的 Docker,核心逻辑其实和在其他 Linux 发行版上装 Docker 没什么本质区别,但考虑到国内网络环境和云服务器的特殊性,有几个坑需要提前避开。

下面按生产环境的标准流程来梳理,分“一键脚本”和“手动标准安装”两种路径,推荐后者,因为可控性更强。

一、 前置准备:系统更新与依赖

不管用哪种方法,第一步永远是保持系统最新,并安装基础依赖。登录到你的 Ubuntu CVM,执行以下命令:

# 更新软件包索引
sudo apt update && sudo apt upgrade -y

# 安装必要的依赖包
sudo apt install -y ca-certificates curl gnupg lsb-release

这里 ca-certificates 是为了验证 GPG 密钥,curl 用于下载,gnupg 用于密钥管理。这一步不能省,否则后面拉取镜像或添加源时会报证书错误。

二、 方案选择

方案 A:官方一键脚本(适合快速测试/个人项目)

Docker 官方提供了一个便捷的安装脚本,适合不想折腾配置文件的场景。

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

注意:

  1. 加了 --mirror Aliyun 参数是因为默认源在国内访问极慢,经常超时。阿里云的 Docker 镜像源相对较快且稳定。
  2. 执行完后,Docker 服务通常会自动启动。你可以用 systemctl status docker 检查状态。

方案 B:手动配置官方源(推荐,适合生产环境)

这种方式更规范,便于后续通过 apt 统一管理版本,也方便排查问题。

1. 添加 Docker 官方 GPG 密钥

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

2. 设置稳定的仓库源

由于国内直连 Docker Hub 官方源速度慢,建议直接使用阿里云的镜像提速源作为 apt 源地址。首先确定你的 Ubuntu 版本代号(如 jammy, focal 等):

lsb_release -cs

假设输出是 jammy (Ubuntu 22.04),则执行:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

注:如果你不确定版本号,也可以直接用 $(lsb_release -cs) 动态获取。

3. 安装 Docker Engine

再次更新索引并安装:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

这里安装了 docker-compose-plugin,这样你就可以直接运行 docker compose up 而不是单独去装一个 python 版的 docker-compose。

4. 启动并设置开机自启

sudo systemctl start docker
sudo systemctl enable docker

三、 关键优化:非 root 用户权限 & 镜像提速

在生产环境中,不建议直接用 root 操作 Docker,也不建议每次输 sudo docker ...。

1. 创建 docker 用户组并授权

# 创建 docker 组(如果不存在)
sudo groupadd docker

# 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 重启生效,或者重新登录 SSH
newgrp docker

之后你就不需要 sudo 前缀了。

2. 配置国内镜像提速器(必做)

Ubuntu 自带的 Docker 配置文件中没有配置镜像提速器,导致拉取 hello-world 或官方镜像时可能非常慢甚至失败。我们需要修改 /etc/docker/daemon.json。

腾讯云用户可以直接使用腾讯云的镜像提速器地址(需登录控制台获取专属地址),或者使用通用的阿里云、网易等公共提速器。

以阿里云为例(你需要去阿里云容器镜像服务申请一个专属提速器地址,这里用占位符):

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://<你的专属镜像提速器地址>.mirror.aliyuncs.com",
    "https://docker.m.daocloud.io",
    "https://huecker.io",
    "https://dockerhub.timeweb.cloud"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}
EOF

说明:

  • registry-mirrors: 配置多个镜像源,优先使用国内高速源。
  • exec-opts: 指定 cgroup driver 为 systemd,这是 Ubuntu 下最推荐的配置,避免与 systemd 冲突。
  • log-opts: 限制日志文件大小,防止磁盘被 Docker 日志写满。

3. 重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

验证是否生效:

docker info | grep -i registry

看到配置的 mirror 地址即表示成功。

四、 腾讯云特有注意事项

  1. 安全组策略:
    Docker 默认监听 2375 (未加密) 或 2376 (TLS)。默认情况下,Docker socket (/var/run/docker.sock) 只有 root 和 docker 组成员可访问。切勿在公网开放 Docker API 端口(如 2375),否则服务器会被瞬间接管XX。如果需要通过远程客户端连接 Docker,务必配置 TLS 认证,并通过安全组限制 IP。

  2. 内核参数优化:
    Ubuntu 默认的 sysctl 参数对容器化应用不是最优的。建议在 /etc/sysctl.conf 中添加以下内容以提升网络性能和稳定性:

    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1

    然后执行 sudo sysctl -p 生效。这有助于解决某些容器间通信或 Kubernetes 兼容性问题。

  3. Swap 分区警告:
    Docker 在新版本中默认要求禁用 Swap,否则会报错。如果你的 CVM 内存充足,建议关闭 Swap:

    sudo swapoff -a
    # 注释掉 /etc/fstab 中的 swap 行,防止重启后恢复

总结

在腾讯云 Ubuntu CVM 上装 Docker,核心就是:换源(阿里云镜像)+ 配提速器 + 开权限。按照上述步骤操作,基本能一次性跑通,无需反复调试网络问题。如果是用于生产环境,记得定期执行 sudo apt update && sudo apt upgrade docker-ce 来保持安全补丁更新。