新电脑到手,我装的第一批软件里,Docker Desktop 一定排在最前面,紧接着就是它容器里的 Redis。早年我在 Windows 上跑 Redis,用的还是编译好的 exe 版本,虽然双击能用,但版本切换、数据清理、多项目隔离这些事,时间一长就乱成一锅粥。后来全面切到 Docker Desktop 装 Redis,这件事才算真正变成一条命令的事,而且跟生产环境的行为完全一致,写完配置直接带走。
这篇文章我想把整条链路讲透:为什么选 Docker Desktop 而不是原生包,装 Docker Desktop 时最容易卡住的虚拟化问题怎么破,Redis 容器怎么跑才稳妥,以及日常使用中那些不翻文档根本不知道的坑。无论你之前有没有接触过 Docker,只要想在 Windows 或 Mac 上把 Redis 干净利落地跑起来,照着这篇文章操作基本不会跑偏。
1. 为什么我会推荐用 Docker Desktop 来跑 Redis
1.1 原生安装 Redis 的那些隐形成本
先说一个经常被忽略的事实:Redis 官方其实不提供 Windows 原生版本。你以前在 Windows 上用的那些安装包、绿色 exe,基本是微软老团队维护的移植版或者第三方编译的产物,版本通常落后官方一大截。早期我做本地开发时,项目里用到 Redis 6.x 的新特性,Windows 上还是 5.x,有些命令行为还不一致,排错排到怀疑人生。
除了版本滞后,原生安装还有一个麻烦:数据目录、配置文件、日志散落在系统各处,想清楚备份或者彻底卸载都很难。换个项目需要不同 Redis 版本,你得先停服务、换环境变量、手动清数据,稍不注意就把上一个项目的数据给污染了。多人协作时更痛苦,每个人机器上的 Redis 配置都不一样,你在本地复现不出同事的问题,最后只能靠一句“我这边是好的”收场。
这些痛点说白了就是环境一致性被打破。而容器化正好把“环境”这个东西固化成了文件,镜像是什么样,跑起来就是什么样,跟你在哪台机器上运行没太大关系。这也是我从原生安装转到 Docker Desktop 的最核心原因,不是为了赶时髦,是为了省时间。
1.2 Docker 方案到底赢在哪里
Docker Desktop 装 Redis 最大的优势,是“可重复”。同一个 docker run 命令,你换三台机器执行,得到的 Redis 行为几乎完全一致,包括版本、配置、数据目录结构。这听起来简单,实际做开发时价值极大,尤其是当你需要同时维护多个项目的缓存服务时。
第二个优势是隔离和清理成本极低。在 Docker 里,想要一份“干净”的 Redis,本质就是删容器、删卷、重新 run 一次,全程不超过一分钟。原生安装要先停服务、删目录、清注册表,还总担心删不干净。放到容器里,数据卷一删,整个世界就清净了,而且不影响系统里其他程序。
第三个优势是贴近生产。现在绝大多数公司的 Redis 在测试和生产环境里也是容器化部署,你在本地用 Docker Desktop 跑 Redis,意味着本地、测试、生产的运行方式高度一致。你在本地验证过的配置,直接拿到生产环境基本不会出幺蛾子。这一点对于要经常处理 Redis 缓存、分布式锁这类问题的后端同学来说,价值比什么都实在。
1.3 选型之前必须知道的几个前提
Docker Desktop 不是完美的,它有几个前提你得先确认。首先是操作系统支持,Windows 10 64 位专业版/企业版/教育版(2004 后)或 Windows 11,macOS 这边的要求是 10.15 及以上。其次是硬件虚拟化必须在 BIOS 里开启,这个后面我专门讲,因为它是最常见的安装失败原因。
还有一点要注意:Docker Desktop 在 Windows 上默认走 WSL2 后端,需要系统里有 WSL2 内核,并且 Windows 功能里启用了“虚拟机平台”。如果你之前折腾过 WSL,那基本是现成的;如果完全没碰过,安装向导也会提示你去装。整个过程不难,但顺序错了会卡很久。我的建议是,先按官方要求把 WSL2 准备好,再装 Docker Desktop,这样最省事。
2. Docker Desktop 安装实录与虚拟化故障排查
2.1 Windows 下 Docker Desktop 的标准安装步骤
安装 Docker Desktop 本身没什么玄学,核心是前置环境。我第一次装的时候直接双击安装包,结果报了一堆错,后来才明白是 WSL2 没就绪。标准流程是这样的:
先用管理员权限打开 PowerShell,执行下面两条命令启用必要的 Windows 功能:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart然后重启系统,再去安装 WSL2 内核更新包。这里有个小技巧:你可以在应用商店里装一个 Ubuntu,也可以直接用 wsl --install 一条命令把 WSL 装好,后者是当前最省事的做法。装完后在 PowerShell 里执行:
wsl --set-default-version 2确认默认版本是 2,因为 Docker Desktop 对 WSL1 的支持早就边缘化了,用 WSL1 跑 Docker 会有一堆文件系统兼容问题。
然后去 Docker 官网下载 Docker Desktop Installer,双击安装。安装过程中有个选项问你要不要用 WSL2 代替 Hyper-V,除非你有特殊理由,否则必须勾选 WSL2。装完启动,Docker Desktop 会自己初始化,等右下角那个鲸鱼图标变成绿色稳定状态,就说明引擎起来了。
2.2 “virtualisation support wasn't detected”报错的完整排查
这个报错应该是 Docker Desktop 在 Windows 上最常见的劝退点了,搜索量常年霸榜。报错原文是 “Docker Desktop failed to start because virtualisation support wasn't detected”,字面意思是检测不到虚拟化支持。很多人看到这个就懵了,明明自己的 CPU 支持虚拟化,为什么还是报错?
根源基本出在三个方面。第一个是 BIOS 里的虚拟化开关没开,Intel 叫 VT-x 或 Intel Virtualization Technology,AMD 叫 SVM Mode。开机进 BIOS 找一下,把它设为 Enabled,保存重启。这个操作不难,但各家主板菜单命名差别很大,关键词搜“主板型号 + VT-x”即可。
第二个是 Windows 的虚拟化相关功能没启用全。你已经装了 WSL2 和虚拟机平台,但 Hyper-V 本身也可能需要打开,虽然 Docker Desktop 走 WSL2 不直接依赖 Hyper-V,但某些版本的 Windows 功能组合会互相牵扯。可以在“启用或关闭 Windows 功能”里把 Hyper-V 一并勾上,重启后再试。
第三个比较隐蔽:系统里存在第三方虚拟机软件冲突,或者 Windows 沙盒、内存完整性等安全功能影响了虚拟化检测。排查时可以在 PowerShell 里执行 systeminfo,看输出中有没有 “已检测到虚拟机监控程序” 和 “Hyper-V 要求: 已在固件中启用虚拟化” 这两条。如果显示未启用,基本就是 BIOS 或者 Windows 功能的问题。还有一种情况是装了旧版 Docker Desktop 后又升级,配置残留导致检测异常,彻底卸载后删掉 C:\ProgramData\Docker 再重装一次,也能解决不少疑难杂症。
2.3 Docker Desktop 的几个建议配置:内存、存储路径与磁盘回收
装好 Docker Desktop 后,我建议先花两分钟做三个设置,后面能避免很多麻烦。第一个是资源限制。打开 Docker Desktop 的 Settings,在 Resources 里把内存从默认值调整到 4GB 左右,CPU 给 2-4 核,够本地开发用就行。如果不限制,WSL2 会默认吃掉宿主机相当一部分内存,尤其你机器内存只有 16GB 时,跑几个容器后整个电脑会明显变卡。
第二个是存储路径。默认的 WSL2 虚拟磁盘文件(注意是 ext4.vhdx)放在 C 盘用户目录下,时间一长,镜像和容器数据会把 C 盘撑爆。修改方法跟一般软件不太一样,不是直接改配置,而是把 Docker 的 ext4.vhdx 迁移到别的盘。最简单的操作是:在 Settings 的 Resources -> Advanced 里修改 Disk image location 到 D 盘或别的数据盘,保存后 Docker 会重建环境;如果已经有很多镜像,可以先 docker image save 导出再导入。这一步强烈建议一开始就做,等 C 盘满了再折腾就麻烦了。
第三个是磁盘回收。WSL2 的 vhdx 文件有个特点:容器里删了文件,宿主机的虚