在腾讯云 Ubuntu 镜像上部署 Docker,核心逻辑其实和你在本地或其他云厂商那里操作是一样的,但有几个针对国内环境和腾讯云平台特性的“坑”需要注意。
别整那些虚的,直接上干货。主要分为常规快速部署和生产环境优化两个路径。
一、 最快速路径:一键脚本(适合测试/个人项目)
如果你只是跑个服务、做个实验,不想管依赖包冲突,用官方提供的安装脚本是最快的。
- SSH 登录你的 CVM(云服务器)
- 执行以下命令:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 注意:这里特意加了
--mirror Aliyun。因为 Docker 官方源在国内下载速度极慢甚至超时,阿里云镜像站通常更稳定。如果你没有配置阿里云镜像源权限,可以不加这个参数,或者手动换源。
- 启动并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
- 验证:
docker version
docker run hello-world
缺点:这种方式安装的 Docker 版本可能不是最新的 LTS 版,且缺乏一些高级安全配置,不适合正式生产环境。
二、 标准规范路径:APT 仓库安装(推荐生产使用)
这是最稳妥、可维护性最高的方式。步骤如下:
1. 更新系统并安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg lsb-release
2. 添加 Docker 官方 GPG 密钥和 APT 源
由于网络原因,建议直接使用国内镜像源配置(以阿里云为例,腾讯云用户也可用清华源或中科大源):
# 创建密钥环目录
sudo mkdir -p /etc/apt/keyrings
# 添加 GPG 密钥 (使用阿里云镜像)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加仓库
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
3. 安装 Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4. 验证安装
sudo docker run hello-world
如果看到 “Hello from Docker!” 说明成功了。
三、 腾讯云特有注意事项(关键!)
在腾讯云 Ubuntu 实例上,光装好 Docker 是不够的,你必须处理以下几个问题,否则容器要么连不上网,要么性能受限,要么被安全组拦截。
1. 防火墙与安全组配置
- 腾讯云控制台:确保你的 CVM 绑定的安全组已经放行了你需要暴露的端口(如 80, 443, 8080 等)。Docker 默认使用 iptables/nftables 管理流量,但云厂商的安全组是硬过滤,必须在控制台开启。
- Ubuntu 内部防火墙 (UFW):腾讯云 Ubuntu 镜像有时默认开启了 UFW。如果 Docker 容器无法访问外部网络,尝试临时关闭 UFW 测试:
sudo ufw disable如果恢复正常,说明是 UFW 规则问题。生产环境建议保留 UFW,但需手动允许 Docker 子网通信(通常 Docker 安装后会自动配置 iptables 规则绕过 UFW,但最好检查
/var/log/syslog看是否有 DROP 日志)。
2. 内核模块与 cgroup 驱动
Ubuntu 20.04+ 默认使用 systemd 作为 cgroup 驱动,这与 Docker 推荐的驱动一致。但请确认:
cat /etc/docker/daemon.json
如果没有此文件,创建它并写入以下内容以优化性能(可选):
{
"exec-opts": ["native.cgroupdriver=systemd"],
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"registry-mirrors": [
"https://<你的阿里云镜像提速器地址>"
]
}
重要:获取阿里云镜像提速器地址需要登录阿里云开发者平台,每个账号唯一。这能极大提升拉取镜像的速度。
然后重启 Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
3. 非 root 用户使用 Docker
默认情况下,只有 root 或 docker 组成员才能运行 Docker 命令。为了方便日常开发:
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
注销并重新登录 SSH,即可无需 sudo 运行 docker 命令。
4. 磁盘空间监控
Ubuntu 镜像默认可能没有对 Docker 日志做限制,长时间运行后 /var/lib/docker 会吃掉大量磁盘空间。务必配置 daemon.json 中的 log-driver 和 max-size(见上文),并定期检查磁盘使用情况:
docker system df
四、 常见问题排查
-
Q: 容器内无法上网?
- A: 检查 DNS。在
daemon.json中添加"dns": ["8.8.8.8", "114.114.114.114"]。 - A: 检查是否因 IPv6 导致的问题。部分老旧镜像不支持 IPv6,可在
daemon.json中设置"ip6tables": false。
- A: 检查 DNS。在
-
Q: 拉取镜像太慢?
- A: 必须配置镜像提速器。除了阿里云,腾讯云也有自己的镜像提速服务(Tencent Cloud Container Registry),但通常用于私有镜像。对于公共镜像(Docker Hub),阿里云或中科大镜像源仍是最佳选择。
-
Q: 如何卸载旧版 Docker?
- A: 如果之前用过
apt-get install docker这种老包,先清理:sudo apt-get remove docker docker-engine docker.io containerd runc sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
- A: 如果之前用过
总结
在腾讯云 Ubuntu 上部署 Docker,不要迷信一键脚本。采用 APT 仓库 + 阿里云镜像源 + systemd cgroup 驱动 + 日志轮转配置 的组合,才是兼顾速度与稳定性的最佳实践。记得去腾讯云控制台把安全组端口开够,这是最容易踩的坑。
云技术博客