1. 动手之前,先搞清楚 Docker 到底解决什么问题
每次聊到 Docker,我都会先问一句:你是真的需要它,还是只是因为朋友圈都在刷?因为安装 Docker 本身并不难,难的是装完之后不知道怎么用、用起来不知道哪里会踩坑。如果你只是想在电脑上跑个 MySQL、Redis,或者想体验一下容器化部署是什么感觉,那这篇文章能帮你从头走一遍完整的安装流程;如果你是想在生产环境里搭建一套微服务架构,那同样需要先把 Docker 装对、装稳,后面的一切才有基础。
Docker 本质上是一个开源的容器化平台,它把你的应用连同运行环境一起打包成一个“镜像”,然后用这个镜像创建出一个个相互隔离的“容器”。你可以把镜像理解成做蛋糕的模具,容器就是模具做出来的那个蛋糕——同一个模具可以反复用,做出来的蛋糕长得一模一样,而且蛋糕和蛋糕之间互不干扰。这种思路解决的最大痛点就是“在我电脑上明明是好的,怎么到你那儿就崩了”:因为你把整个环境都打包进去了,依赖、配置、版本,全部一张镜像带走。
从热搜词里能看到大家最关心的场景:有在 Windows 上装 Docker Desktop 的、有在 Ubuntu 上用命令行安装的、有拿 Docker 部署 MySQL 8.0 和 Redis 主从的、还有搭 DVWA 靶场做安全测试的。这说明 Docker 之所以火,不是因为它本身高深,而是因为它能承载的玩法实在太多。但无论你最终要用它做什么,第一步永远是同一件事:把 Docker 引擎正确、稳定地装到你的机器上,并且确保它能正常启动、拉取镜像、运行容器。这篇文章我就把 Linux、Windows 两条主路径的安装过程掰开揉碎给你讲,附带平时没人愿意明说的坑点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装前的核心认知:Docker Engine 和 Docker Desktop 是两码事
2.1 两个概念,决定了你的安装方式完全不同
这是新手最容易混淆的一个点。简单来说,Docker Engine 是真正干活的那个“引擎”,它是一个后台守护进程加一套命令行工具,运行在 Linux 系统上。而 Docker Desktop 是面向 macOS 和 Windows 用户的图形化应用,它本质上是在你的电脑里跑一个轻量级虚拟机,虚拟机里装着一个 Linux 环境,Docker Engine 就运行在这个虚拟机里。
所以说,安装方式的取舍其实是在回答一个问题:你的操作系统是什么,你打算在什么环境里跑容器?
- 如果你用的是 Ubuntu、CentOS、Debian 这类 Linux 发行版,直接安装 Docker Engine 就够了,命令行操作,干净利落,资源开销最小。
- 如果你用的是 Windows 10/11 家庭版或专业版,需要装 Docker Desktop,它依赖 Hyper-V 或 WSL2 后端来提供 Linux 运行环境。
- 如果你用的是 macOS,同样装 Docker Desktop,它会自动帮你管理虚拟化层。
这个区分特别重要,因为我见过太多人拿着 Windows 上"Failed to start because virtualisation support wasn't detected"这类报错去搜 Linux 的解决方案,最后折腾半天发现完全对不上号。先搞清楚自己处在哪个环境里,再往下走,能省掉一大半的弯路。
2.2 版本选择:不要盲目追求最新
Docker 的版本迭代非常快,社区版(Community Edition)的发布节奏大概是每个月一个稳定版。但我的建议是:不要一看到新版本就立刻升级。尤其是在生产环境或老项目里,Docker 引擎和内核、网络插件、存储驱动之间的兼容性需要经过验证。如果你只是个人学习或搭建测试环境,那么用官方仓库里的最新稳定版就可以了;如果你是在公司服务器上部署业务,建议先把当前使用的版本固定住,等有余量了再考虑升级。
还有一个容易被忽略的点:Linux 内核版本。Docker 对内核有最低要求,通常建议 3.10 以上,越新越好。如果你用 CentOS 7 这种老系统,默认内核是 3.10,跑 Docker 虽然可以,但在 overlay2 存储驱动下可能会遇到一些性能问题。所以条件允许的话,尽量用较新的操作系统,省心很多。
3. Ubuntu 系统安装 Docker Engine 完整实操
3.1 第一步:卸载旧版本,清理历史残留
如果你以前装过 Docker,或者系统里已经存在 docker、docker-engine、docker.io 之类的旧包,最好先清理干净。原因很简单:新旧版本混装会导致守护进程冲突、配置文件互相覆盖,最后启动失败时你根本定位不到问题出在哪儿。
bash复制sudo apt remove docker docker-engine docker.io containerd runc
这条命令会卸载旧版组件,但不会删除 /var/lib/docker 目录下的镜像、容器、数据卷。如果你确认旧数据都不需要了,再手动把这个目录删掉:
bash复制sudo rm -rf /var/lib/docker
这里要特别提醒:如果你不清楚 /var/lib/docker 里还有什么,就不要急着删。尤其是那些跑了一段时间的容器,数据卷里可能存着数据库文件。我的习惯是先把数据备份出来,再动手清理。
3.2 第二步:安装依赖并添加官方仓库
Ubuntu 上安装 Docker 最推荐的方式是通过官方 apt 仓库,而不是直接 apt install docker.io。因为官方仓库里的版本更新更及时,而且你可以精确控制安装的版本号。先把必要的依赖装上:
bash复制sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
然后添加 Docker 官方的 GPG 密钥,这个是用来验证软件包合法性的,防止下载到被篡改的安装包:
bash复制sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
接着写入仓库信息。注意下面这段命令里的 $(lsb_release -cs) 会自动获取你当前 Ubuntu 的版本代号,比如 22.04 是 jammy,20.04 是 focal:
bash复制echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/
