先讲个真实经历。上周有同事发我一张截图,Docker Desktop 在 Ubuntu 虚拟机里反复弹窗,说 virtualization support was detected 之类的错误,问我怎么处理。我反问他:你在这台机器上装 Docker Desktop 图什么?他愣了一下,说教程不都这么教的吗。其实这正是大多数人卡在“Ubuntu Docker 安装”这一步的核心原因——装了压根用不上的组件,然后被组件自身的限制困住。
如果你也是正在 Ubuntu 上折腾 Docker 的人,这篇文章应该能帮你少走不少弯路。我会从最基础的“你到底需要装哪个 Docker”讲起,到 apt 仓库安装、用户组配置、镜像加速、高频报错排查,最后再用一个 MySQL 8.0 的 Compose 实例收尾。目标只有一个:让你从头到尾顺顺当当把 Docker 用起来,而不是装完就放在那儿吃灰。
1. 先搞清楚:你要装的是 Docker Engine 还是 Docker Desktop
Docker 这个品牌下面有两个容易混淆的东西,几乎所有安装教程的混乱都从这里开始。
Docker Engine 是一个后台服务(daemon),加上一个叫 docker 的命令行客户端。它是 Docker 真正干活的部分。你执行 docker run、docker pull 这些命令时,和系统打交道的是它。
Docker Desktop 则是带图形界面的完整应用,包含了 Docker Engine、Kubernetes 集群、图形化管理面板等一堆东西。它面向的群体是 Windows 和 macOS 用户,因为那两个系统上原生跑 Linux 容器需要一层虚拟机做支撑,Desktop 把这层东西封装好了,用户双击就能用。
问题就出在这里:很多人在 Ubuntu 上装 Docker 时,照着给 Windows 写的教程走,直接去装 Docker Desktop。Desktop 在 Linux 上依然依赖虚拟化层,所以对环境要求非常苛刻——物理机要求 BIOS 里打开 Intel VT-x 或 AMD SVM,虚拟机里还要求宿主机的虚拟化软件支持并开启嵌套虚拟化。任何一个条件不满足,就会出现“failed to start”或者“virtualization support not detected”的报错。
用个不太恰当的类比:Docker Engine 是发动机,Docker Desktop 是装好发动机的整车。你在 Ubuntu 上只需要发动机就能跑,没必要非去开整车,结果被整车对道路的要求卡住。
所以我的建议非常直接:
- 生产服务器、云主机、普通 Linux 开发机:一律安装 Docker Engine。
- Ubuntu 桌面版且你极度依赖图形界面管理容器:可以试 Desktop,但前提是你的硬件虚拟化全开。
- 虚拟机里的 Ubuntu:装 Engine,别折腾 Desktop,纯粹自找麻烦。
这篇文章后面讲的所有内容,全部围绕 Docker Engine 展开。这是 Ubuntu 上最稳妥、最主流、坑最少的一条路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装前花五分钟做环境检查,能躲掉一半的坑
别嫌我啰嗦,这一步真的值得做。我见过太多人一上来就复制粘贴安装命令,装到一半发现架构不对、系统版本不对,或者磁盘空间不足,又得返工。
打开终端,依次执行下面几条命令,每条命令的用途我都写在后面。
bash复制# 查看系统架构
uname -m
Docker 对架构非常敏感。输出是 x86_64 表示 64 位 x86 架构,aarch64 表示 ARM 架构,绝大多数 Ubuntu 主机都是前者。Docker 官方仓库对这两种架构都提供了软件包,但下载地址不一样,所以先确认架构能避免后续的“package not found”错误。
bash复制# 查看 Ubuntu 版本
lsb_release -a
Docker 官方 apt 仓库对 Ubuntu 的支持是分版本维护的,每个版本(如 22.04 Jammy、24.04 Noble)都有独立的软件源目录。虽然 Docker 也兼容一些旧版本系统,但我建议至少使用 Ubuntu 20.04 及以上版本。如果你还在用 18.04,升级完系统再来装 Docker 吧,别在旧系统上死磕。
bash复制# 确认内存和磁盘空间
free -h
df -h /var/lib/docker
Docker 本身不占太多资源,但容器镜像和容器数据都存放在 /var/lib/docker 目录下。一个 MySQL 镜像加一个 Nginx 镜像,轻松吃掉 1GB 以上空间。如果你只是想装来练手,建议至少准备 5GB 可用磁盘;想在生产环境用,单独给 /var/lib/docker 挂一块大磁盘是最稳妥的做法。
bash复制# 更新软件包索引
sudo apt update
执行完这些基础检查后,还有一件重要的事:如果系统之前装过 Docker(不管是 docker.io 还是旧版 docker-engine),先把旧版本干干净净卸载掉,否则会和新的软件包冲突。
bash复制sudo apt remove docker docker-engine docker.io containerd runc
注意这条命令不会删除你的容器数据和镜像,它们还留在 /var/lib/docker 里。如果是全新机器,无视这一步即可。
另外提醒一句:如果你是在 VMware 或 VirtualBox 这类虚拟机软件里装的 Ubuntu,先去虚拟机设置里确认一下嵌套虚拟化是否开启。VMware 里对应的选项叫“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”,VirtualBox 里叫“启用嵌套 VT-x/AMD-V”。虽然装 Docker Engine 不强制要求这个,但很多人在装 Desktop 时才来查这个问题,提前知道没坏处。
3. 用 apt 官方仓库安装 Docker Engine:推荐路线详解
环境检查完,开始正式安装。我这里推荐的是 Ubuntu 上最标准的安装方式:从 Docker 官方 apt 仓库安装。好处有三个:第一,能拿到 Docker 最新的稳定版本;第二,后续可以用系统自带的 apt 命令统一升级 Docker;第三,安装过程可控、可审计,出了问题知道去哪查。
3.1 安装依赖工具
bash复制sudo apt install ca-certificates curl gnupg
这几个工具负责后面下载和验证 GPG 密钥。ca-certificates 是 HTTPS 证书信任链,cu
