1. 为什么我用Docker跑Redis:本地安装的坑与容器化的好处
先说说我自己的经历。以前我在Windows上想装个Redis,第一反应是去官网下载Windows版本,结果发现Redis官方其实并不提供Windows安装包,网上能找到的版本大多数是某个开源作者维护的移植版,版本号还经常停留在老版本上。就算装好了,用redis-server.exe把服务跑起来,想改个配置还得去翻安装目录下的redis.windows.conf文件,改完要重启进程,有时候Redis还以窗口形式在前台挂着,一关终端服务就没了。后来切到Linux服务器上部署,虽然可以用apt或者yum直接装,但服务器上可能同时存在多个项目,每个项目需要的Redis版本不一样,甚至有的项目要用Redis 6的ACL功能,有的项目只需要最基础的String操作,直接在宿主机上装一套根本没法满足。
所以我后来基本上统一用Docker来启动Redis。Docker启动Redis这个操作,表面看就是一条docker run命令的事,但实际用下来,它解决的远不止"启动"这一个动作。比如,容器隔离了进程和文件系统,不同的项目可以用不同版本的Redis,互不干扰;数据目录通过卷挂载到宿主机上,容器删了数据还在;配置文件也可以挂载进去,想调整参数只需要改宿主机上的文件再重启容器。这些能力在本地安装方案里都要靠一堆手工操作去凑,在Docker里却是天然具备的。
这篇文章比较适合这几种人看:一是想在Windows环境快速跑起Redis做本地开发测试的开发同学;二是需要在Linux服务器上部署Redis,但不想污染宿主机环境的运维或后端工程师;三是刚接触Redis和Docker,想搞明白这条启动命令背后每一段参数到底在干什么的新手。内容会从环境准备讲起,一直讲到底层的数据持久化、密码配置、主从复制,以及启动过程中最常见的几个报错,基本覆盖了日常使用里90%以上会碰到的问题。
按惯例先交代一下我使用的环境:开发机是Windows 11,Docker Desktop 4.x版本;生产环境是Ubuntu 22.04,Docker Engine 24.x;Redis镜像用的是官方redis镜像,版本以7.x为主。不同版本和平台的细节差异,在遇到的时候我会单独说明。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 先把Docker环境搞利索:Virtualization检测、WSL2与镜像加速
2.1 确认宿主机虚拟化支持已经开启
很多人在Windows上安装Docker Desktop之后,第一次启动就直接报错:
code复制Docker Desktop failed to start because virtualization support wasn't detected
这个报错对应到热搜词里就是"virtualization support not detected"那条。如果你看到这个提示,先别急着重装Docker Desktop,99%的情况是主板或者Windows功能里的虚拟化开关没开。
排查顺序我的习惯是:
- 打开任务管理器,切到"性能"标签,点击CPU,看右下角是否有"虚拟化:已启用"。如果显示"已禁用",说明BIOS里Hyper-V相关的开关没打开。
- 重启电脑,进入BIOS/UEFI设置,找到Intel Virtualization Technology(Intel VT-x)或者AMD SVM Mode,设置为Enabled。不同主板厂家的菜单位置不一样,但关键词基本就是Virtualization、SVM、VT-x这几个。
- 确认BIOS打开之后,还需要在Windows功能里勾选"虚拟机平台"和"适用于Linux的Windows子系统"这两个可选功能。直接在开始菜单搜索"启用或关闭Windows功能",找到这两项勾上,确定后重启系统。
这里有个容易被漏掉的细节:Docker Desktop新版默认使用WSL2作为后端,而WSL2底层依赖Windows的虚拟机平台组件。很多人以为BIOS虚拟化开了就够了,Windows功能没开启一样会报同样的错误。我的建议是两块都检查一遍,宁可多点几下,不要在启动报错上反复卡住。
2.2 WSL2和Docker Desktop的配合逻辑
Windows下现在的主流方案是Docker Desktop + WSL2后端,Docker Desktop不再自己维护一个Hyper-V虚拟机,而是把容器运行在WSL2的轻量级虚拟化环境里。这个方案的优点是内存占用更可控,启动速度也比老版本快,而且WSL2本身就是一个完整的Linux发行版环境,你在里面装什么工具都很方便。
装好Docker Desktop之后,建议在Settings -> Resources -> WSL Integration里,把需要用Docker的WSL发行版勾上。不勾的话,你在WSL终端里敲docker命令会提示找不到命令,只能在PowerShell里用docker。很多人装好了Docker Desktop,却在WSL里用不了,就是没注意这个开关。
我自己的习惯是,在Windows上做开发测试时,直接把项目代码放在WSL2的文件系统里(比如/home/你的用户名/),然后在WSL终端里操作Docker。这样做的好处是文件I/O性能比跨文件系统访问好很多,而且Redis容器通过卷挂载宿主机目录时,路径解析和权限问题也少很多。
2.3 Linux环境安装Docker Engine
如果你是在Ubuntu服务器上操作,安装更直接。官方推荐用apt仓库方式安装:
bash复制sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
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
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.
