努力
加油

腾讯云Ubuntu系统下安装Docker推荐使用哪种方式?

在腾讯云 Ubuntu 系统上安装 Docker,最推荐的方式是通过官方 Docker 仓库进行安装。

虽然 apt install docker.io(Ubuntu 默认仓库)或 snap install docker 也能用,但在生产环境和高可用场景下,这两种方式都有明显的坑。下面我从实际运维角度,把几种常见方式的优劣和具体步骤给你捋清楚。

为什么不推荐其他两种方式?

  1. apt install docker.io:

    • 版本滞后:Ubuntu 源里的 Docker 版本通常比较老,可能落后于 Docker 官方最新稳定版几个大版本。很多新特性、性能优化和安全补丁你都用不上。
    • 依赖冲突:有时候会和系统自带的 containerd 或其他包产生版本不匹配的问题。
  2. snap install docker:

    • 启动慢:Snap 包是容器化打包的,冷启动时间比原生二进制慢很多。
    • 权限问题:在云服务器上,尤其是涉及挂载宿主机目录、配置网络策略时,Snap 的沙盒机制经常让你头疼,调试起来非常麻烦。
    • 资源占用:额外加载 Snap 运行时,对内存微小的浪费在大规模集群中也是成本。

为什么推荐官方仓库安装?

  • 版本同步:你能拿到 Docker CE (Community Edition) 的最新稳定版,紧跟官方更新节奏。
  • 稳定性高:这是 Docker 官方维护的源,经过广泛测试。
  • 易于管理:后续升级、卸载、插件安装都更规范。

实操步骤:在腾讯云 Ubuntu 上通过官方源安装 Docker

以下命令基于 Ubuntu 20.04/22.04 LTS,操作前请确保你有 sudo 权限。

第一步:清理旧版本(如果之前装过)

sudo apt-get remove docker docker-engine docker.io containerd runc

注意:这一步不会删除你的镜像、容器和数据卷,但为了保险起见,重要数据还是建议提前备份。

第二步:设置 Docker 官方 APT 仓库

我们需要先安装一些必要的依赖,然后添加 GPG 密钥和官方源。

# 1. 安装必要依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# 2. 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /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

# 3. 添加官方仓库
echo 
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu 
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

关键点:这里使用了 $VERSION_CODENAME 自动识别 Ubuntu 版本(如 jammy, focal),避免手动输入错误。

第三步:安装 Docker Engine

# 1. 更新索引
sudo apt-get update

# 2. 安装最新版 Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

第四步:验证安装

sudo docker run hello-world

看到 Hello from Docker! 就说明成功了。


腾讯云环境下的特别注意事项

作为在云上跑业务,有几个细节必须注意,否则后期排查问题会死得很惨:

1. 非 root 用户运行 Docker(推荐)

默认情况下,Docker 守护进程绑定在 Unix socket /var/run/docker.sock 上,只有 root 用户有权限访问。为了方便日常开发和管理,建议创建一个 docker 用户组,并将你的用户加入其中。

# 创建 docker 组(如果不存在)
sudo groupadd docker

# 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 重新登录使生效,或者执行 newgrp docker

之后你就可以直接用 docker ps 而不需要每次加 sudo 了。

2. 配置镜像提速器(国内必做)

在腾讯云或其他国内云厂商上,直接拉取 Docker Hub 镜像速度极慢,甚至超时。务必配置提速器。

你可以使用腾讯云的免费容器镜像服务(TCR)个人版提供的提速器地址,或者阿里云等其他厂商提供的公开提速器(只要能用就行)。

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

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://your-accelerator-address.tcr.tencentcloudcr.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF

解释:

  • registry-mirrors: 镜像提速地址。
  • exec-opts: 指定 cgroup driver 为 systemd,这与 Ubuntu 默认的 systemd 管理方式一致,避免 kubelet 等工具出现兼容性问题(如果你打算以后装 Kubernetes 的话,这个一定要配)。
  • log-driver & log-opts: 限制日志大小和数量,防止日志撑爆磁盘。

3. 重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

4. 安全组与防火墙

如果你需要在外部访问容器端口,记得去腾讯云控制台 -> 安全组规则里放行对应端口。同时,本地防火墙(ufw)如果开启,也要允许相应端口。

sudo ufw allow 80/tcp  # 示例:放行 HTTP 端口
sudo ufw reload

总结

在腾讯云 Ubuntu 上:

  1. 首选:通过官方 APT 仓库安装 Docker CE。
  2. 必做:配置镜像提速器(解决下载慢问题)。
  3. 推荐:将用户加入 docker 组,并配置 systemd cgroup driver。
  4. 避坑:不要用 snap,不要依赖 Ubuntu 自带源的老版本。

这套流程是目前国内云环境下最稳定、最主流的生产级实践。