努力
加油

Debian系统在腾讯云服务器上如何正确安装Docker?

在腾讯云的 Debian 实例上装 Docker,别整那些花里胡哨的一键脚本,最稳妥、最符合生产环境规范的做法还是走官方源。很多人喜欢用 apt install docker.io,那是 Debian 仓库自带的旧版本,不仅功能不全,还容易跟内核模块冲突,千万别这么干。

咱们按标准流程来,分几步走,确保你装的是最新稳定版,而且后续升级不出幺蛾子。

第一步:清理旧环境(如果有)

如果你之前乱搞过,或者从别的教程复制粘贴过命令,先做个清洁工。

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

这一步是为了防止残留的配置文件或旧包与新版本冲突。如果提示没找到包,直接跳过即可。

第二步:安装依赖和配置 GPG 密钥

Docker 官方源是 HTTPS 加密的,所以得先让系统信任这个源。

  1. 更新软件包索引并安装必要工具:
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
  1. 添加 Docker 官方的 GPG 密钥:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

注意:这里用的是 /etc/apt/keyrings,这是较新版本 Debian 推荐的路径,比以前的 /usr/share/keyrings 更规范。

  1. 设置 Docker 的稳定版源:

你需要确认你的 Debian 版本代号(比如 bookworm, bullseye 等)。运行 lsb_release -cs 查看。假设你是最新的 Debian 12 (bookworm),命令如下:

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

如果你不确定版本号,可以直接写死为当前主流版本,或者用下面这个更通用的判断逻辑(适合自动化脚本):

DISTRO=$(. /etc/os-release && echo $VERSION_CODENAME)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian ${DISTRO} stable" | sudo tee /etc/apt/sources.list.d/docker.list

第三步:安装 Docker Engine

现在源配好了,开始装货。

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

这里重点装的是 docker-ce(社区版),以及配套的 CLI 工具和容器运行时 containerd.io。docker-compose-plugin 是新版推荐的编排插件方式,替代了以前单独的 docker-compose 二进制文件。

第四步:验证安装

装完后,先看看版本:

docker --version
docker compose version

然后跑个 Hello World 测试一下核心功能是否正常:

sudo docker run hello-world

如果看到 “Hello from Docker!” 并且没有报错,说明基础环境没问题。

第五步:关键优化——免 sudo 运行

在生产环境中,每次输密码敲 sudo 很麻烦,而且有些应用权限管理要求严格。建议把当前用户加入 docker 组。

  1. 创建 docker 组(通常已存在):
sudo groupadd docker
  1. 将你的用户加入该组:
sudo usermod -aG docker $USER

注意:修改完用户组后,必须注销并重新登录,或者重启服务器,新的组权限才会生效。这点很容易被忽略,导致后面执行 docker 命令时依然报 permission denied。

  1. 验证:

新开一个终端窗口,直接运行:

docker ps

如果不报错且能列出容器列表,说明配置成功。

第六步:腾讯云特有注意事项

在云服务器上,尤其是国内厂商,有几个坑得避开:

  1. 防火墙与安全组:
    Docker 默认使用 bridge 网络,宿主机端口映射是通过 iptables/nftables 实现的。腾讯云的安全组是在网络层拦截的,所以如果你在 Docker 里开了 80 端口,记得去腾讯云控制台 -> 实例详情 -> 安全组规则里,入方向放行 TCP 80 端口。否则网络访问不了。

  2. IPv6 问题:
    很多腾讯云新实例默认开启了 IPv6。Docker 对 IPv6 的支持在某些旧版本或特定配置下会有问题(比如容器无法获取 IPv6 地址,或者 DNS 解析异常)。如果遇到网络不通的问题,检查 /etc/docker/daemon.json,可以尝试暂时禁用 IPv6:

    {
      "ipv6": false,
      "fixed-cidr-v6": "..."
    }

    或者直接注释掉相关 IPv6 配置,优先保证 IPv4 连通性。

  3. 存储驱动选择:
    Debian 默认文件系统通常是 ext4 或 xfs,Docker 默认的 overlay2 存储驱动在这些文件系统上表现良好。不需要额外调整。但如果你的数据盘格式特殊(比如 btrfs),可能需要指定存储驱动,不过一般云服务器不会这么折腾。

  4. 开机自启:
    确保 Docker 服务随系统启动:

    sudo systemctl enable docker
    sudo systemctl start docker

常见问题排查

  • Error response from daemon: dial unix docker.raw.sock: connect: no such file or directory
    这说明 Docker 守护进程没起来。检查状态:sudo systemctl status docker。如果没启动,看日志 journalctl -u docker.service。常见原因是磁盘空间满了(df -h 检查一下根分区),或者之前的残留进程卡住了。

  • Permission denied when trying to start containers
    90% 是因为你还没注销重登,或者用户没加到 docker 组。再次确认 groups $USER 是否包含 docker。

  • DNS 解析慢或失败
    国内服务器访问 Docker Hub 有时会被干扰。可以在 /etc/docker/daemon.json 中配置镜像提速器。腾讯云有自己的镜像提速地址,通常在控制台“容器镜像服务”里能找到。例如:

     {
       "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
     }

    改完后重启 Docker:sudo systemctl restart docker。

总结来说,走官方源、配好 GPG、加用户组、开安全组,这四步到位,Debian 上的 Docker 就能稳稳当当跑起来。别信网上那些 curl -sSL https://get.docker.com | sh 的一键脚本,虽然方便,但在生产环境里,你知道每一步在干什么,才不会被半夜的故障搞崩溃。