努力
加油

腾讯云Ubuntu 20.04或22.04安装Docker推荐使用哪种方式?

在腾讯云(以及大多数 Linux 发行版)上安装 Docker,目前最推荐、也是官方文档首推的方式是:使用 Docker 官方的 APT 仓库进行安装。

虽然 apt install docker.io 或 snap install docker 也能用,但在生产环境和高并发场景下,这两种方式都有明显的坑。下面我结合国内网络环境和实际运维经验,详细拆解为什么选官方源,以及具体的避坑指南。

为什么不推荐其他方式?

  1. apt install docker.io (Ubuntu 默认仓库)

    • 版本滞后:Ubuntu 自带的 docker.io 包通常不是最新版,可能落后几个大版本。Docker 更新很快,旧版本可能存在已知的安全漏洞或性能瓶颈。
    • 依赖混乱:这个包往往包含了一些非核心的组件,容易和系统其他包产生冲突。
  2. Snap 安装 (snap install docker)

    • 权限问题:Snap 的沙盒机制会导致容器无法直接访问宿主机的一些设备节点(如 /dev/nvidia0 等),如果你要用 GPU 跑 AI 模型或者需要挂载特定硬件,Snap 版的 Docker 会给你制造无数麻烦。
    • 启动慢:Snap 的冷启动速度比原生二进制慢,对于追求低延迟的服务来说是个隐患。
    • 国内访问不稳定:Snap 服务器在国内有时连接不畅,更新和下载体验不佳。

推荐方案:Docker 官方 APT 仓库安装

这种方式能确保你拿到的是最新稳定版,且与 Ubuntu 系统包管理无缝集成。

前置准备

登录你的腾讯云 Ubuntu 实例,建议先执行以下命令更新基础环境并安装必要的依赖:

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

第一步:添加 Docker 官方 GPG 密钥

由于 Docker 官方源不在默认的 Ubuntu 源列表中,我们需要导入他们的签名密钥来验证安装包的安全性。

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

注意:这里使用的是较新的 /etc/apt/keyrings/ 路径,这是 Debian/Ubuntu 较新版本推荐的密钥存储位置,比旧的 /usr/share/keyrings/ 更规范。

第二步:设置 Docker 稳定版 APT 仓库

这一步最关键,你需要根据你服务器的 CPU 架构选择对应的源。绝大多数腾讯云 CVM 都是 amd64 (x86_64),如果是 ARM 架构(如部分轻量应用服务器或自定义镜像),请替换为 arm64。

# 确认架构
dpkg --print-architecture

# 添加仓库(以 amd64 为例)
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) 会自动识别你是 20.04 (focal) 还是 22.04 (jammy)。

第三步:安装 Docker Engine

再次更新索引,然后安装核心组件:

sudo apt-get update

# 安装 docker-ce (社区版), containerd.io, 和 docker-compose-plugin
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

第四步:验证安装

sudo docker run --rm hello-world

如果看到 “Hello from Docker!” 字样,说明安装成功。


腾讯云环境下的关键优化配置

在云上裸机或虚拟机中直接运行 Docker,如果不做后续配置,可能会遇到“权限不足”、“网络不通”或“资源限制”等问题。以下是必须做的几件事:

1. 允许普通用户运行 Docker(可选但推荐)

默认情况下,只有 root 可以操作 Docker。为了方便日常开发,可以创建一个 docker 用户组并将当前用户加入其中:

sudo groupadd docker
sudo usermod -aG docker $USER

重要提示:修改后需要重新登录终端(exit 再 ssh 进去)才能生效。之后你可以直接运行 docker ps 而不需要 sudo。

2. 配置镜像提速器(解决国内拉取慢的问题)

从 Docker Hub 拉取镜像在国内非常慢,甚至经常超时。务必配置腾讯云或阿里云的镜像提速器。

以腾讯云镜像提速器为例(需在腾讯云控制台获取专属地址):

  1. 编辑或创建 daemon.json 文件:

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://你的专属提速地址.mirror.swr.myhuaweicloud.com"] 
      # 注意:这里是举例,请登录腾讯云控制台 -> 容器服务 -> 镜像提速器 获取真实地址
    }
    EOF
  2. 重启 Docker 服务使配置生效:

    sudo systemctl daemon-reload
    sudo systemctl restart docker

3. 调整内核参数(提升稳定性)

Docker 对 Linux 内核有一定要求,特别是 cgroup v2 的支持。Ubuntu 20.04 默认可能是 cgroup v1,22.04 默认是 v2。建议在 /etc/sysctl.conf 中添加以下参数以优化内存管理和网络栈:

# 添加到 /etc/sysctl.conf
vm.overcommit_memory=1
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1

然后执行 sudo sysctl -p 使其立即生效。

4. 防火墙与安全组

Docker 本身不管理 iptables/firewalld,它通过 DOCKER-USER 链来工作。但在腾讯云环境中,首要关注的是控制台的安全组规则。

  • 确保你的安全组已经放行了容器需要暴露的端口(如 80, 443, 8080 等)。
  • 不要尝试在云服务器内部手动关闭防火墙来测试连通性,这极不安全。应通过安全组策略精准控制入站流量。

总结

在腾讯云 Ubuntu 20.04/22.04 上:

  1. 安装方式:坚决使用 Docker 官方 APT 源。
  2. 核心动作:加 GPG 密钥 -> 加官方源 -> 安装 docker-ce + containerd.io。
  3. 必做优化:配置镜像提速器(否则你会怀疑人生),配置普通用户权限,检查安全组而非本地防火墙。

这套流程是目前国内云厂商环境下最稳定、维护成本最低的方案。