更新于

Debian 和 Ubuntu 上安装 Docker Engine 的完整教程(2026 最新官方方式)


适用系统

  • Ubuntu:24.04 (Noble LTS)、25.10 (Questing)、22.04 (Jammy LTS)
  • Debian:13 (Trixie)、12 (Bookworm)、11 (Bullseye)

步骤 0:彻底清理旧配置(防止冲突,最关键!)

在开始前,必须移除所有旧的 Docker 源和密钥(你之前遇到的错误几乎都源于此):

# 卸载冲突包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
  sudo apt-get remove --purge -y $pkg || true
done

# 删除旧源文件和密钥(覆盖常见残留位置)
sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /etc/apt/sources.list.d/docker.sources
sudo rm -f /etc/apt/sources.list.d/*docker*
sudo rm -f /etc/apt/keyrings/docker*
sudo rm -f /usr/share/keyrings/docker*
sudo rm -f /usr/share/keyrings/*docker*

# 清理 apt 缓存并更新(现在应该无冲突)
sudo apt clean
sudo apt update

如果 apt update 还报 Docker 相关的签名/密钥错误,说明还有残留文件没删干净,可用以下命令查找并手动删除:

find /etc/apt /usr/share/keyrings -type f -name "*docker*" 2>/dev/null

步骤 1:安装必要工具并添加官方 GPG 密钥

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

# 创建 keyrings 目录(推荐权限 0755)
sudo install -m 0755 -d /etc/apt/keyrings

# 下载 Docker 官方 GPG 密钥(.asc 格式,官方当前推荐)
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc   # Ubuntu 用这个
# 或 Debian:
# sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

注意:Ubuntu 和 Debian 的 GPG URL 不同(/linux/ubuntu/gpg vs /linux/debian/gpg),但内容其实相同(同一个密钥)。用对应系统的即可。

步骤 2:添加 Docker 官方仓库(推荐 deb822 格式)

对于 Ubuntu:

sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(lsb_release -cs)
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
Architectures: $(dpkg --print-architecture)
EOF

对于 Debian(包括 trixie):

sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $( . /etc/os-release && echo "$VERSION_CODENAME" )
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
Architectures: $(dpkg --print-architecture)
EOF

(如果你的系统 codename 识别有问题,可手动替换 Suites: trixieSuites: bookworm 等。)

步骤 3:更新索引并安装 Docker

sudo apt update

# 如果这里出现 "Failed to parse keyring" 或 "not signed":
#   - 确认 docker.asc 文件存在且非空:ls -l /etc/apt/keyrings/docker.asc
#   - cat /etc/apt/keyrings/docker.asc 看是否有内容(应为 ASCII armored 公钥)
#   - 权限正确:应为 -rw-r--r-- 或更宽松

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

步骤 4:验证安装 & 配置

  1. 检查版本:
docker --version
docker compose version   # 注意是 docker compose(新插件式)
  1. 测试运行:
sudo docker run --rm hello-world
  1. 启动并启用服务(通常自动):
sudo systemctl enable --now docker
sudo systemctl status docker
  1. 免 sudo 使用(强烈推荐)
sudo usermod -aG docker $USER
newgrp docker          # 立即生效,或注销重登录

常见问题快速修复表(基于你的实际报错)

错误描述原因解决办法
Conflicting values set for Signed-By同一个源用了不同密钥文件步骤 0 彻底删除所有旧密钥和源文件
Failed to parse keyring … No such file源指向的 docker.asc 不存在/空重新下载密钥(步骤 1),确认文件存在且有内容
repository is not signed密钥无效或未正确引用用 deb822 格式 + 确认 Signed-By 路径正确
sqv returned error code (1)trixie 上对坏密钥更严格确保密钥文件非空、非损坏,权限 a+r

如果想用旧的 .list 格式(兼容性好,但官方现在推 deb822):

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

完成以上步骤后,Debian trixie 和 Ubuntu 都能正常安装最新 Docker Engine。

有任何一步报错,直接贴输出,我继续帮你调试~ 祝安装顺利!