在腾讯云 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
注意:
- 加了
--mirror Aliyun参数是因为默认源在国内访问极慢,经常超时。阿里云的 Docker 镜像源相对较快且稳定。 - 执行完后,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 地址即表示成功。
四、 腾讯云特有注意事项
-
安全组策略:
Docker 默认监听2375(未加密) 或2376(TLS)。默认情况下,Docker socket (/var/run/docker.sock) 只有 root 和 docker 组成员可访问。切勿在公网开放 Docker API 端口(如 2375),否则服务器会被瞬间接管XX。如果需要通过远程客户端连接 Docker,务必配置 TLS 认证,并通过安全组限制 IP。 -
内核参数优化:
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 兼容性问题。 -
Swap 分区警告:
Docker 在新版本中默认要求禁用 Swap,否则会报错。如果你的 CVM 内存充足,建议关闭 Swap:sudo swapoff -a # 注释掉 /etc/fstab 中的 swap 行,防止重启后恢复
总结
在腾讯云 Ubuntu CVM 上装 Docker,核心就是:换源(阿里云镜像)+ 配提速器 + 开权限。按照上述步骤操作,基本能一次性跑通,无需反复调试网络问题。如果是用于生产环境,记得定期执行 sudo apt update && sudo apt upgrade docker-ce 来保持安全补丁更新。
云技术博客