Windows平台Docker Desktop安装与Redis容器实战教程

发布时间:2026/9/16 21:32:50
Windows平台Docker Desktop安装与Redis容器实战教程 1. 从零开始为什么 Windows 上装 Docker 首选 Desktop我接触 Docker 比较早但老实说早期在 Windows 上玩容器特别折腾。那时候要么装个虚拟机跑 Linux要么用 Docker Toolbox 配 VirtualBox性能差、网络适配麻烦动不动就报一些让人摸不着头脑的错。直到 Docker Desktop 逐渐成熟Windows 上的容器体验才算真正“正常”了。这篇系列的第一篇咱们就用 Windows 平台 Docker Desktop 把环境搭起来然后拿 Redis 容器做练手对象从安装、配置、拉镜像、跑容器到数据持久化完整走一遍。写这个教程的初衷很简单很多新手被网上碎片化的教程搞得很乱装个 Docker 折腾一天最后卡在虚拟化检测、WSL 2 这些地方连 Docker 长什么样都没看到。这篇文章就是帮你把这条路上的坑提前填平。先说清楚 Docker Desktop 是什么。它是 Docker 官方专门为 macOS 和 Windows 推出的桌面图形化工具自带 Docker 引擎、命令行工具、镜像管理界面和容器监控面板。你不需要记一堆复杂的后台命令去启动守护进程装上 Desktop 之后引擎自动跑起来你只要打开终端敲docker命令就行。对于初学者来说这是 Windows 上体验 Docker 成本最低的一条路径。这次实操我用的环境是 Windows 11 Docker Desktop 4.x 系列如果你的系统是 Windows 10 2004 及以上版本流程基本一致。下面从头开始讲每一步我都标注了容易踩坑的地方。2. 环境准备与关键检查项2.1 确认系统要求和虚拟化支持装 Docker Desktop 之前先花两分钟检查自己的电脑条件。官方要求 Windows 10 64 位专业版/企业版/教育版2004 或更高或者 Windows 11 任意版本。家庭版也能装但是安装过程会额外帮你配置 WSL 2多几个步骤后面我会单独说明。第二件事是检查 CPU 虚拟化有没有开启。这一步很多人忽略导致后面 Docker Desktop 启动时直接报错误。打开任务管理器切到“性能”标签点击“CPU”看右下角的“虚拟化”状态。如果显示“已启用”说明 BIOS 层面的虚拟化技术已经打开可以直接跳到下一节。如果显示“已禁用”需要重启电脑进 BIOS找到 Intel Virtualization TechnologyIntel 平台或 SVM ModeAMD 平台把它设为 Enabled保存退出。AOI 提示有些电脑的 BIOS 里写的是Intel VT-x、AMD-V之类的名字不同品牌主板叫法不太一样认准 Virtualization 关键词基本不会错。禁用了虚拟化Docker Desktop 启动时会直接弹一个“Docker Desktop failed to start because virtualisation support wasnt detected”的窗口这是安装阶段最常见的报错之一根源就是 BIOS 设置。2.2 安装和配置 WSL 2Docker Desktop 在 Windows 上跑 Linux 容器底层依赖 WSL 2Windows Subsystem for Linux。WSL 2 本质上是一个轻量级虚拟机但它和 Docker 引擎高度集成启动快、内存占用可控。安装 WSL 2 最简单的方式是用管理员身份打开 PowerShell执行wsl --install这个命令会自动完成两件事安装 WSL 的内核组件把默认版本设置为 WSL 2。执行完重启电脑WSL 2 环境就算搭好了。验证方式是在 PowerShell 里运行wsl --status wsl --set-default-version 2看到“默认版本: 2”就说明 WSL 2 正常工作。如果你之前用过 WSL 1需要用wsl --set-version 发行版名称 2手动转换。Windows 10 家庭版用户注意wsl --install在部分旧版本上可能不可用这时候需要手动开启“适用于 Linux 的 Windows 子系统”功能。打开“控制面板 - 程序 - 启用或关闭 Windows 功能”勾选“适用于 Linux 的 Windows 子系统”和“虚拟机平台”两项重启后再执行 WSL 内核更新包的安装。这一步比较繁琐但网上的教程其实很多搜“WSL 2 家庭版 手动安装”就能找到微软官方的详细说明。2.3 Hyper-V 是否必须网上很多教程说装 Docker Desktop 必须开 Hyper-V这个说法其实不够准确。Docker Desktop 有两种运行模式基于 Hyper-V 和基于 WSL 2。Windows 10 2004 以上的版本官方推荐的是 WSL 2 模式你不需要单独去开启 Hyper-V 功能。但要注意Docker Desktop 安装过程中会检查 Windows 的虚拟化能力如果 WSL 2 没配置好安装器会提示你启用相关功能。我的建议是统一走 WSL 2 路线这不仅能跑 Docker以后你想折腾 Linux 环境比如装个 Ubuntu 子系统写脚本也一并解决了一鱼两吃。3. 下载安装 Docker Desktop 与中文界面方案3.1 获取安装包打开 Docker 官网docker.com导航到 Products 下的 Docker Desktop选择 Windows 版本下载。下载下来的安装包大概 500MB 左右网速慢的话耐心等一会儿。双击安装包安装流程很简单。有一个关键选项需要注意在安装过程中安装器会询问“Use WSL 2 instead of Hyper-V”务必勾选这个选项然后点 Accept 继续安装。装完之后桌面会出现 Docker Desktop 的图标首次启动会弹出一个 Accept Terms 的窗口点击 Accept 再等几秒钟右下角的鲸鱼图标变成绿色常亮就说明引擎已经跑起来了。这里插一句很多人在启动 Docker Desktop 时遇到“Docker Desktop - wsl is unresponsive”的报错。这个错误通常不是 Docker 本身的问题而是 WSL 2 卡住了。解决思路是打开 PowerShell执行wsl --shutdown把 WSL 彻底停掉。重新启动 Docker Desktop。如果还是不行检查是不是 Windows 更新把 WSL 内核弄坏了去“设置 - 应用 - 可选功能”里看一下 WSL 相关的更新组件有没有缺失。3.2 验证安装结果启动完成后打开任意终端PowerShell、CMD 或者 Windows Terminal 都行运行docker version如果安装成功会同时显示 Client 和 Server 的版本信息。注意看这一行Server: Docker Engine - Community只要有 Server 段的输出说明 Docker 引擎运行正常。如果只显示 Client 信息而 Server 报错大概率是引擎没启动回到桌面检查 Docker Desktop 的状态。另外建议顺手执行一个最经典的测试命令docker run hello-world这个命令会从远程仓库拉取一个测试镜像并运行输出一段欢迎信息证明整个链路客户端 - 引擎 - 镜像仓库 - 容器运行时都是通的。3.3 Docker Desktop 能设置中文界面吗这个问题的关注度挺高毕竟很多人的英语没那么顺手。Docker Desktop 的官方界面至今没有提供中文语言包设置里也没有切换语言的选项。网上有一些“汉化补丁”本质是把安装目录下的语言资源文件替换成中文但是 Docker Desktop 每次更新都会把文件覆盖回去而且乱替换文件可能导致软件启动异常我个人不推荐为了汉化去动安装目录。我的建议是界面几个核心单词就那么几个Container、Images、Volumes、Settings用一两次就记住了。真正写代码、跑命令还是集中在终端里Docker Desktop 的图形界面只是辅助不要被这个卡住。4. 核心概念扫盲与高频命令速记4.1 镜像、容器、仓库三者的关系在动手跑 Redis 之前先把三个最核心的概念搞清楚。我习惯用一个类比镜像Image是菜谱容器Container是照着菜谱做出来的一道菜仓库Registry是存放菜谱的图书馆。镜像是一个只读的模板里面打包了运行某个软件所需的完整文件系统、依赖、配置和启动命令。比如 redis 镜像里就包含了 Redis 的二进制文件、默认配置和入口脚本。容器是镜像运行时的实例。你可以把同一个镜像启动多个容器各自独立运行、互不干扰就像同一个菜谱可以做很多道菜。仓库是集中存放镜像的地方默认用的是 Docker Hub后面我们会配置国内镜像加速器解决下载慢的问题。4.2 高频命令清单这一节整理我在日常使用中出镜率最高的命令新手先把这些背熟剩下的遇到再查命令作用备注docker pull 镜像名从仓库拉取镜像例如docker pull redisdocker images查看本地已有镜像简写docker image lsdocker ps查看运行中的容器-a查看所有容器含已停止docker run 镜像名创建并启动容器最常用的命令后面细讲docker stop 容器ID停止容器可以用容器名替代 IDdocker start 容器ID启动一个已有的容器docker rm 容器ID删除容器加-f强制删除运行中的容器docker rmi 镜像ID删除镜像简写docker image rmdocker logs 容器ID查看容器日志加-f可以流式追踪docker exec -it 容器ID bash进入容器内部执行命令相当于 SSH 进容器这些命令记不住没关系用多了自然就记住了。真正要理解的是docker run的各个参数下面拿 Redis 容器实操展开。5. 实战运行 Redis 容器5.1 拉取 Redis 镜像Redis 是开源的内存键值数据库用来做缓存、消息队列、Session 存储都非常顺手。用 Docker 跑 Redis 的好处是不用在宿主机上手动安装编译 Redis不用纠结版本冲突想要哪个版本直接docker pull一行搞定。先在终端执行docker pull redis不带标签时默认拉取latest最新版。如果你想指定版本比如使用 Redis 7.2docker pull redis:7.2拉取成功后运行docker images可以看到本地镜像列表redis 镜像已经在里面了。5.2 第一个 Redis 容器用最简单的方式启动一个 Redis 容器docker run --name my-redis -d redis参数解释一下--name my-redis给容器起个名字后面操作容器时可以通过名字引用不需要记一串十六进制 ID。-d后台运行。不加这个参数终端会被前台进程占住一关终端容器就停了。执行完docker 会输出一串容器 ID运行docker ps可以看到 my-redis 在运行中。这时候你可能会问容器跑起来了但外部怎么连它这就涉及到端口映射。Redis 默认监听在容器的 6379 端口但这个端口只存在于容器的隔离网络空间里宿主机访问不到。要让宿主机也就是你的 Windows 电脑上的客户端连接 Redis需要把容器的 6379 端口映射到宿主机的某个端口上docker stop my-redis docker rm my-redis docker run --name my-redis -d -p 6379:6379 redis-p 6379:6379的参数格式是宿主机端口:容器端口。冒号左边是宿主机对外暴露的端口右边是容器内部监听的端口。这样设置之后访问本机的 6379 端口请求就会被转发到容器的 6379 端口。验证方式有两种在 PowerShell 里执行telnet 127.0.0.1 6379能连上说明端口通了。用 Docker Desktop 的图形界面点进 my-redis 容器看 Logs 有没有输出 Redis 启动成功的日志。5.3 进入容器操作 Redis有个常见需求是直接进容器里执行 Redis 命令比如用 redis-cli 检查键。命令是docker exec -it my-redis redis-cli-it参数的意思是交互终端interactive tty进入之后你就站在容器的 shell 环境里了。试试几条命令127.0.0.1:6379 set name docker-redis 127.0.0.1:6379 get name 127.0.0.1:6379 exit能正常读写数据说明容器运行完全健康。这里有个细节docker exec -it my-redis redis-cli这条命令其实是“在容器里执行 redis-cli 程序并进入它的交互模式”等价于先docker exec -it my-redis bash进入容器 shell再执行redis-cli。两种方式效果一样直接一条命令更高效。5.4 数据持久化别让容器重启后数据丢失先做个实验。假设你在 Redis 里写了几个键然后执行docker stop my-redis docker start my-redis docker exec -it my-redis redis-cli进去一查键全没了。原因其实很简单容器是用镜像创建的容器内部写入的数据存放在容器的可写层container layer里。一旦容器被删除或者你用--rm参数启动的容器退出这一层数据就被彻底清掉了。这就是容器“无状态”的代价也是新手最常踩的坑。解决办法是使用数据卷Volume挂载。通俗地说就是把宿主机上的一个目录“借”给容器用容器写入的数据实际落在宿主机目录上容器删了数据还在。先创建一个数据卷docker volume create redis-data然后用挂载方式重新启动容器docker run --name my-redis -d -p 6379:6379 -v redis-data:/data redis-v redis-data:/data表示把名为 redis-data 的数据卷挂载到容器的/data目录。Redis 默认的持久化文件 AOFappendonly.aof和 RDB 快照dump.rdb就写在/data下。再做一次实验写入数据、重启容器、进去查询。这次你会发现数据还在。注意使用数据卷之后启动容器时如果指定了-v参数后续的docker start/stop不需要重新挂载容器已经记住了自己的挂载配置。这一点跟docker run的启动参数不同后者每次创建新容器时都要重新指定。5.5 用自定义配置启动 Redis生产环境里直接用默认配置跑 Redis 的情况很少一般需要修改内存上限、启用 AOF 持久化、设置密码等。Docker 容器里改配置有两种常见方式方式一在docker run时通过命令行参数覆盖。docker run --name my-redis -d -p 6379:6379 -v redis-data:/data redis redis-server --appendonly yes --requirepass mypassword注意命令结尾的redis-server --appendonly yes --requirepass mypassword镜像是 Redis 官方包装过的默认启动命令就是redis-server你在后面追加的配置项会作为参数传给 redis-server。这种方式的优点是简单缺点是命令长了容易写错。方式二把宿主机上的配置文件挂载到容器里。先用文本编辑器创建一个 redis.conf写入你需要的配置项appendonly yes requirepass mypassword maxmemory 256mb maxmemory-policy allkeys-lru然后挂载进去docker run --name my-redis -d -p 6379:6379 -v /path/to/your/redis.conf:/usr/local/etc/redis/redis.conf -v redis-data:/data redis redis-server /usr/local/etc/redis/redis.conf这种方式的优势配置文件在宿主机上管理改完重启容器就能生效可维护性好得多。我自己的习惯是测试环境用方式一需要交付或长期维护的环境用方式二。5.6 常用容器管理操作串讲趁着手上的 Redis 容器还热乎把容器生命周期管理串一遍# 停止容器 docker stop my-redis # 启动已存在的容器 docker start my-redis # 重启容器 docker restart my-redis # 查看容器详细信息IP、端口、挂载卷等 docker inspect my-redis # 实时查看容器日志 docker logs -f my-redis # 删除容器先停止再删 docker stop my-redis docker rm my-redis还有一个特别实用的场景宿主机上装一个 redis-cli 客户端连容器里的 Redis。如果你的 Windows 上没有 redis-cli可以直接用 Docker 跑一个临时容器来连接docker run -it --rm --network host redis redis-cli -h 127.0.0.1 -p 6379--rm参数让容器退出时自动删除自己适合这种一次性任务不会在磁盘上留垃圾容器。--network host让容器直接复用宿主机的网络栈这样容器内的 127.0.0.1 就是宿主机的 127.0.0.1。6. 进阶Redis 主从与 Docker Compose6.1 一条命令跑起 Redis 主从学完单机 Redis 之后很多人会想试主从复制。在宿主机上手动搭主从要准备两套配置但在 Docker 里跑两个小时就能搞定。先删掉之前启动的容器用两个容器的形式跑一主一从docker run --name redis-master -d -p 6379:6379 redis docker run --name redis-slave -d -p 6380:6379 --link redis-master redis redis-server --slaveof redis-master 6379--link redis-master是 Docker 早期的容器互联方式新项目不太推荐了但在本地快速测试时简单有效。--slaveof redis-master 6379是 Redis 5.0 之前的老参数Redis 5.0 以后推荐用--replicaof。docker run --name redis-slave -d -p 6380:6379 --link redis-master redis redis-server --replicaof redis-master 6379验证主从状态# 连接从库 docker exec -it redis-slave redis-cli -p 6379 # 执行 127.0.0.1:6379 info replication看到role:slave和master_link_status:up就说明主从关系建立成功了。在主库写入数据在从库能查到复制链路就是通的。6.2 Docker Compose 管理一套环境随着容器数量增加一条条命令行敲docker run太原始了。正式一点的做法是把容器编排写成 YAML 文件用 docker-compose 命令统一管理。在任意目录创建docker-compose.ymlversion: 3.8 services: redis: image: redis:7.2 container_name: my-redis restart: always ports: - 6379:6379 volumes: - redis-data:/data - ./redis.conf:/usr/local/etc/redis/redis.conf command: redis-server /usr/local/etc/redis/redis.conf volumes: redis-data:然后执行docker-compose up -d-d表示后台启动。停止服务用docker-compose down。这种方式最大的优势是整套环境的配置都记录在文件里换一台机器把 YAML 文件复制过去一条命令直接拉起同样的环境可复现性拉满。这也呼应了热词里那个“redis docker compose 生产环境部署”的关注点。如果不追求高可用用 Compose 管理一套带持久化、带自定义配置的 Redis 实例放在小规模生产场景里是够用的。7. 常见报错与排查实录7.1 报错速查表从安装到运行我把最容易遇到的错误和排查方向整理成一个表方便你对照排查报错信息根因解决办法virtualisation support wasnt detectedBIOS 里 CPU 虚拟化没开重启进 BIOS开启 Intel VT-x / AMD-Vwsl is unresponsiveWSL 2 卡死或内核异常执行wsl --shutdown重启 Docker Desktopfailed to connect to the docker api at npipe:////./pipe/dockerdesktoplinuxen...Docker Desktop 引擎没启动检查桌面右下角鲸鱼图标是否常亮重启 Desktopdocker pull超时或极慢默认仓库地址在国内访问不稳定配置国内镜像加速器port is already allocated宿主机的端口被占用换一个宿主机端口映射或netstat -ano找端口占用进程docker: no matching manifest for windows/amd64 in the manifest list entries.拉取的镜像不支持当前平台确认 Docker Desktop 是否运行在 Linux 容器模式Docker Desktop requires a newer WSL kernel versionWSL 2 内核版本过旧执行wsl --update更新内核7.2 配置镜像加速器的实操国内直接docker pull redis经常慢到怀疑人生。解决方案是配置镜像加速器。这不是什么黑科技本质上就是用 Docker 官方支持的方式把镜像仓库指向一个离你更近的镜像站。打开 Docker Desktop点击右上角齿轮图标进入 Settings - Docker Engine在 JSON 配置里加一段{ registry-mirrors: [ https://docker.mirrors.ustc.edu.cn, https://hub-mirror.c.163.com ] }填完点 Apply RestartDocker Desktop 会自动重启。之后docker pull的速度会有明显改善。需要提醒的是镜像加速器的可用性不是一成不变的如果某个地址失效了换一个公开可用的就行。另外加速器只管docker pull的拉取速度不影响容器运行所以配置错了也不至于导致容器起不来。7.3 Docker Desktop 只能装在 C 盘吗安装路径确实是个老问题。Docker Desktop 默认安装到 C 盘官方安装器没有提供图形化的路径选择选项这一点确实不太友好。网上有改安装路径的思路用命令行带参数安装或者装完用符号链接symbolic link把整个安装目录迁移到 D 盘。但这些操作我认为不值得追求。真正吃磁盘空间的是 WSL 2 的虚拟磁盘文件ext4.vhdx这个文件默认也存放在 C 盘用户目录下用一段时间可能膨胀到 10GB 以上。如果你的 C 盘紧张可以做两件事用wsl --manage 发行版 --move 路径把 WSL 发行版迁移到其他盘。定期清理 Docker 垃圾docker system prune -a。这个命令会清理所有不再使用的镜像、容器、数据卷一次能释放不少空间。C 盘真的寸土寸金的话迁移 WSL 才是根源解法Docker Desktop 程序本体几百兆反而不用太焦虑。8. 实操总结与个人经验分享整体流程走下来你会发现 Docker 的概念虽然多但核心操作链路其实很清晰准备环境 - 拉镜像 - 跑容器 - 配数据卷 - 批量编排。这篇把单机版 Redis 容器跑通之后后续可以继续深入的东西非常多比如用 Dockerfile 把自己写的应用做成镜像、搭建 Redis 集群、用 Docker Compose 编排一套完整后端环境。这也是我计划写“Docker 系列”后续内容的思路。最后分享一个我自己习惯的小技巧不管是测试还是生产启动容器时尽量显式指定镜像版本别默认用latest。比如redis:7.2而不要redis:latest。latest标签指向的版本会随着时间的推移而变化今天跑得好好的镜像拉取时间不同可能内容都不一样排查问题的时候多一个不确定因素。指定版本号容器环境可复现性高一个量级。再一个体会是遇到 Docker Desktop 启动不了的问题别急着重装。先看 WSL 2 状态再查虚拟化开关最后才考虑卸载重装。百分之八十的启动问题都出在前面两个环节。这篇文章的操作部分都是我自己在 Windows 11 上实测过的直接用基本不会出问题。如果你的环境和我不一样遇到报错也别慌对照第七节的速查表排查问题一般都能解决。希望这篇能帮你顺利跑起第一个容器。