在腾讯云 CVM(云服务器)上部署 Ubuntu 系统的 Docker,虽然流程标准化,但为了避坑和确保生产环境的稳定性,建议按照以下“官方推荐”且经过验证的步骤操作。
这里以 Ubuntu 20.04/22.04 LTS 为例,这是目前最稳定的长期支持版本。如果你使用的是较老的版本或最新的滚动更新版,逻辑类似,但包名可能略有差异。
核心原则
- 不要直接用
apt install docker.io:这个包里的 Docker 版本通常滞后,且配置不规范。 - 使用官方 APT 仓库:保证获取的是最新稳定版。
- 非 root 用户运行:出于安全考虑,创建 docker-group 并赋予普通用户权限。
第一步:清理旧环境(如果之前装过)
很多教程会忽略这一步,但如果之前通过 apt 安装过 docker、docker-engine 或 docker-ce,可能会产生冲突。
# 卸载可能存在的旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 清理残留的依赖和数据(可选,如果是新机器可以跳过,但建议清理以防万一)
sudo apt-get autoremove --purge
注意:执行上述命令不会删除你的镜像、容器或卷数据,它们通常存储在
/var/lib/docker。如果你担心数据丢失,可以先备份该目录。
第二步:安装前置依赖
Docker 的 APT 仓库需要 HTTPS 传输,因此需要安装证书工具;同时需要一些基础系统库。
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
第三步:添加 Docker 官方 GPG 密钥和 APT 源
这是最关键的一步,确保你下载的软件来自 Docker 官方,未被篡改。
1. 添加 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. 设置稳定版仓库
根据你的 Ubuntu 版本自动添加对应的仓库源。对于大多数腾讯云 CVM,使用以下命令即可:
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
提示:
$(lsb_release -cs)会自动识别你的 Ubuntu 代号(如 focal, jammy)。如果不确定,可以手动替换,例如 Ubuntu 22.04 是jammy,20.04 是focal。
第四步:安装 Docker Engine
更新索引后,安装最新版本的 Docker 引擎、CLI 工具和容器运行时。
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
docker-ce:社区版引擎docker-ce-cli:命令行工具containerd.io:容器运行时(Docker 依赖它)docker-compose-plugin:原生 Compose 插件(替代旧的独立二进制文件docker-compose,推荐使用此方式)
第五步:验证安装
检查 Docker 是否成功启动并运行。
sudo docker run hello-world
如果看到 Hello from Docker! 以及一系列说明信息,说明安装成功。
查看版本确认:
docker --version
docker compose version
第六步:配置非 Root 用户访问 Docker(重要)
默认情况下,只有 root 用户可以运行 Docker 命令。在生产环境中,这很不方便也不安全。我们需要创建一个 docker 用户组,并将当前用户加入其中。
1. 创建 docker 组(如果不存在)
sudo groupadd docker
2. 将当前用户加入 docker 组
假设你的用户名是 ubuntu(腾讯云默认),请替换为你自己的用户名:
sudo usermod -aG docker $USER
3. 激活组成员身份
为了让更改立即生效,你需要重新登录会话,或者执行:
newgrp docker
4. 测试非 root 用户权限
退出当前 SSH 连接,重新登录,然后直接运行(不需要 sudo):
docker ps
如果没有报错,说明配置成功。
第七步:配置镜像提速器(国内必做)
在国内访问 Docker Hub 拉取镜像速度极慢甚至超时。必须配置腾讯云或阿里云等国内镜像提速器。
1. 获取腾讯云镜像提速器地址
登录 腾讯云控制台 -> 搜索“容器镜像服务” -> 左侧菜单“镜像提速器”。你会看到一个类似这样的地址:
https://mirror.ccs.tencentyun.com
2. 修改 Docker 配置文件
编辑 /etc/docker/daemon.json。如果文件不存在,则创建它。
sudo vi /etc/docker/daemon.json
写入以下内容(请将 your-accelerator-url 替换为你从腾讯云控制台获取的实际地址):
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.m.daocloud.io"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
说明:
registry-mirrors:提速源,建议优先用腾讯云官方提供的,其次可以用 daocloud 等第三方。exec-opts: 指定 cgroup driver 为 systemd,这与 Kubernetes 推荐的保持一致,避免后续编排问题。log-opts:限制日志大小和数量,防止磁盘被 Docker 日志撑爆,这是运维最佳实践。
3. 重启 Docker 服务使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
4. 验证提速器是否生效
docker info | grep -i registry
输出中应包含你配置的镜像提速器地址。
常见问题排查
-
权限拒绝 (Permission denied)
- 确保已执行
usermod -aG docker $USER并重新登录。 - 检查
/var/run/docker.sock的权限。
- 确保已执行
-
启动失败
- 查看日志:
sudo journalctl -u docker.service -f - 常见原因:端口冲突、SELinux/AppArmor 拦截(Ubuntu 默认不启用 AppArmor 严格模式,但需留意)、磁盘空间不足。
- 查看日志:
-
无法拉取镜像
- 检查网络连通性:
ping mirror.ccs.tencentyun.com - 检查防火墙:腾讯云安全组是否放行了出站 443 端口(默认放行,但需确认)。
- 检查网络连通性:
-
Compose 命令找不到
- 如果使用
docker-compose-plugin,请使用docker compose up(中间有空格),而不是docker-compose up。
- 如果使用
总结
这套流程是腾讯云 CVM + Ubuntu 环境下最稳健的 Docker 安装方案。关键点在于:使用官方源而非 apt 默认源、配置镜像提速器、非 root 用户权限管理。完成这些步骤后,你的服务器就具备了运行现代云原生应用的基础环境。
云技术博客