努力
加油

腾讯云上的Ubuntu镜像如何快速部署Docker?

在腾讯云 Ubuntu 镜像上部署 Docker,核心逻辑其实和你在本地或其他云厂商那里操作是一样的,但有几个针对国内环境和腾讯云平台特性的“坑”需要注意。

别整那些虚的,直接上干货。主要分为常规快速部署和生产环境优化两个路径。

一、 最快速路径:一键脚本(适合测试/个人项目)

如果你只是跑个服务、做个实验,不想管依赖包冲突,用官方提供的安装脚本是最快的。

  1. SSH 登录你的 CVM(云服务器)
  2. 执行以下命令:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 注意:这里特意加了 --mirror Aliyun。因为 Docker 官方源在国内下载速度极慢甚至超时,阿里云镜像站通常更稳定。如果你没有配置阿里云镜像源权限,可以不加这个参数,或者手动换源。
  1. 启动并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
  1. 验证:
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。
  • 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

总结

在腾讯云 Ubuntu 上部署 Docker,不要迷信一键脚本。采用 APT 仓库 + 阿里云镜像源 + systemd cgroup 驱动 + 日志轮转配置 的组合,才是兼顾速度与稳定性的最佳实践。记得去腾讯云控制台把安全组端口开够,这是最容易踩的坑。