Skip to content

Ubuntu 安装 Docker Desktop 时 docker-ce-cli 无法安装的解决方案

问题描述

在使用 Ubuntu 系统安装 Docker Desktop 时,很多用户会遇到如下错误:

bash
The following packages have unmet dependencies:
 docker-desktop : Depends: docker-ce-cli but it is not installable
E: Unable to correct problems, you have held broken packages.

这个错误通常是由于缺少 Docker 官方仓库或依赖关系不完整导致的。与 Windows 和 macOS 的一体化安装包不同,在 Linux 系统上安装 Docker Desktop 需要先安装 Docker Engine 作为依赖。

根本原因

Docker Desktop for Linux 依赖于 Docker Engine 的部分组件(特别是 docker-ce-cli),但这些组件不在 Ubuntu 的默认软件源中。需要先添加 Docker 官方软件源,系统才能找到这些依赖包。

解决方案

方法一:添加 Docker 官方仓库后安装(推荐)

这是最完整和推荐的解决方案,遵循 Docker 官方文档的最佳实践。

bash
# 卸载可能的旧版本 Docker
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc
do
    sudo apt-get remove $pkg
done
bash
# 安装必要的依赖包
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 创建密钥环目录
sudo mkdir -p /etc/apt/keyrings

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加 Docker 软件源
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

# 更新软件包索引
sudo apt-get update
bash
# 安装下载的 Docker Desktop .deb 包
sudo apt-get install ./docker-desktop-<version>-<arch>.deb

版本匹配注意事项

确保 $(lsb_release -cs) 返回正确的 Ubuntu 版本代号。如果遇到问题,可以手动检查并替换为正确的版本名(如 jammy、focal 等)。

方法二:修复软件包依赖关系

如果已经尝试安装但遇到依赖问题,可以先尝试修复:

bash
# 尝试修复损坏的依赖关系
sudo apt --fix-broken install

# 然后重新安装 Docker Desktop
sudo apt install ./docker-desktop-<version>-<arch>.deb

方法三:直接使用 apt 替代 apt-get

在某些情况下,使用 apt 命令可能比 apt-get 效果更好:

bash
sudo apt update
sudo apt install ./docker-desktop-<version>-<arch>.deb

安装后验证

安装完成后,可以通过以下命令验证 Docker Desktop 是否安装成功:

bash
# 检查 Docker 版本
docker --version

# 运行测试容器
docker run hello-world

如果看到 "Hello from Docker!" 的消息,说明安装成功。

重要注意事项

Docker Desktop 与 Docker Engine 的关系

Docker Desktop for Linux 和 Docker Engine 可以同时安装在同一台机器上,但它们使用不同的存储位置以防止冲突。虽然可以同时运行两者,但可能会在某些情况下导致问题。

关于安装过程中的警告

在安装结束时,可能会看到如下警告信息,可以安全忽略:

Download is performed unsandboxed as root as file docker-desktop-
<version>-<arch>.deb couldn't be accessed by user '_apt'. - 
pkgAcquire::Run (13: Permission denied)

总结

在 Ubuntu 上安装 Docker Desktop 失败的主要原因是缺少 Docker 官方软件源。通过先添加 Docker 仓库再安装 Docker Desktop,可以解决 docker-ce-cli 依赖问题。建议始终遵循 Docker 官方文档的安装指南,确保使用正确的版本代号和安装步骤。

如果仍然遇到问题,建议查看 Docker 官方文档获取最新安装指南: