1. 为什么大家都在 Ubuntu 上装 Docker
最近收到好几条私信,都是在问 Ubuntu 下装 Docker 的事。有的是刚在 VMware 里装完 Ubuntu 22.04 系统,打算搭个开发环境练手;有的是项目要用 MySQL、Redis 这类中间件,嫌本地一个个装太麻烦;还有的是在 Windows 上被 Docker Desktop 折磨得不行——启动报错、Hyper-V 冲突、虚拟化检测不到,干脆换个思路直接用纯 Linux 环境。
说实话,这个选择挺明智的。Docker 本来就是在 Linux 上诞生的,容器技术依赖 Linux 内核的 namespace 和 cgroups 能力,在 Linux 原生环境里跑,性能和稳定性都比在 macOS 或者 Windows 上靠虚拟机中转要扎实得多。而且 Ubuntu 作为市场占有率最高的桌面发行版之一,文档齐全、社区活跃,遇到问题基本都能搜到答案,对新手非常友好。
这篇指南我会从零开始,覆盖安装前的环境准备、Docker Engine 和 Docker Desktop 两条路线的选型对比、镜像源配置、常用命令实战,以及最常见的坑和排查方法。你在 VMware 里装也好,物理机裸装也好,只要跟着走,基本不会卡壳。所有内容都是我在多台 Ubuntu 20.04/22.04 上实际操作过的经验,不是抄官方文档那种干巴巴的步骤。
先说清楚一个基本概念,Docker 有两个常见的东西容易混:一个是 Docker Engine,就是那个在命令行里跑的容器运行时;另一个是 Docker Desktop,带图形界面,集成了 Docker Engine、Compose、Kubernetes 等一堆工具。在 Ubuntu 上我强烈建议先试 Docker Engine,轻量、干净、和命令行工具链配合得最好,这也是绝大多数服务器环境的标准用法。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装前的环境准备:版本选择与系统检查
2.1 Ubuntu 版本怎么选,LTS 和普通版的区别
安装前第一件事是确认系统版本。去终端里执行 lsb_release -a 或者查看 /etc/os-release 就能看到。
bash复制lsb_release -a
如果你看到的是 Ubuntu 22.04 LTS 或者 24.04 LTS,那恭喜,这是目前最省心的两个版本。LTS 全称 Long Term Support,意味着官方会给长达 5 年的安全和维护更新,Docker 官方也会优先保证在 LTS 版本上的兼容性。非 LTS 版本(比如 23.10、24.10 这类)虽然也能装 Docker,但你可能遇到内核版本太新导致的兼容问题,我的建议是别拿生产环境开这种玩笑。
顺带提醒一句,现在很多新机器预装的是 Ubuntu 24.04,apt 源里自带的 docker.io 包版本往往偏旧,所以尽量不要直接 apt install docker.io,要装就用 Docker 官方源,后面我会详细说。
2.2 硬件虚拟化检查:为什么 VMware 里容易翻车
很多人在 VMware 虚拟机里安装 Docker,启动的时候报 Virtualization support not detected。这个问题的根源在于虚拟机的 CPU 虚拟化功能没开。
Docker Desktop 在 Linux 上使用 KVM 虚拟化来跑 Linux 虚拟机,这需要 CPU 支持硬件虚拟化,也就是 Intel 的 VT-x 或 AMD 的 SVM。检查方法很简单:
bash复制egrep -c '(vmx|svm)' /proc/cpuinfo
返回 0 表示没开启,大于 0 说明已开启。如果返回 0,你需要:
- 关闭虚拟机操作系统(先执行
sudo shutdown now)。 - 在 VMware 的虚拟机设置里,找到“处理器”选项。
- 勾选“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”。
- 重新启动虚拟机。
这里有个容易忽略的点:VMware Workstation 本身的“虚拟化引擎”里还有一个选项“虚拟化 Intel VT-x/EPT”,如果你宿主机 BIOS 里没开 VT-x,这里勾了也没用。 物理机上也要进 BIOS 把 Intel Virtualization Technology 打开。这个坑在 Windows 上装 Docker Desktop 的时候同样会出现,很多人的报错信息都指向这里。
2.3 网络环境和软件源:先解决装不上的底层问题
Ubuntu 的软件源配置在 /etc/apt/sources.list 或者 /etc/apt/sources.list.d/ 目录里。如果你在国内,直接用默认源安装 Docker 会非常慢,甚至超时。解决办法是换成国内镜像源。目前比较稳定的是阿里云、清华 tuna 的 Ubuntu 镜像源。
bash复制sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update
这个步骤不是必须的,但如果你在安装过程中遇到网络超时,大概率就是源的问题。另外安装 Docker 官方源时也需要网络通畅,Docker 的官方源在国内直连速度一般,后面讲到 Docker 镜像源配置的时候我会一起说怎么处理。
3. Docker Engine 完整安装:从官方源到验证
3.1 用官方 apt 仓库安装而不是脚本一键装
现在网上很多教程直接用 curl -fsSL https://get.docker.com | sh 一键脚本安装。这条命令确实快,但它会从 Docker 官方下载脚本并直接以 root 权限执行,存在两个问题:一是你根本不知道脚本里具体做了哪些操作,安全上不透明;二是脚本默认使用官方源,在国内网络环境下经常失败。我个人的建议是把官方仓库加到 apt 源里,一步步来,既安全又可复查。
先安装一些依赖工具:
bash复制sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
然后添加 Docker 的 GPG 密钥,用于验证软件包完整性:
bash复制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
这里有个细节:不同版本的 Ubuntu 对应的仓库代号不一样。22.04 是 jammy,24.04 是 noble。用 $(. /etc/os-release && echo $VERSION_CODENAME) 可以动态获取,不用手动记:
bash复制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
接着更新源并安装:
bash复制sudo apt update
sudo apt install -y docker-ce docke
