Windows 环境下 Docker WSL2 完整安装教程目标读者Windows 用户零 Docker 基础。⏱️预计耗时30-45 分钟含下载时间✅最终效果Docker Desktop 跑起来PostgreSQL Redis 容器正常运行一、为什么需要 Docker你学 Spring Boot AI需要一个底座来存数据组件作用传统做法Docker 做法PostgreSQL存向量、用户数据下载 exe一路 next配环境变量docker run -d postgres一行搞定Redis缓存、会话同上docker run -d redis一行搞定MySQL业务数据库日志、订单、知识库下载 exe配置 my.inidocker run -d mysql一行搞定PGVector向量检索需要自己编译安装官方镜像开箱即用Docker 让你不用在 Windows 上装一堆服务全部跑在隔离的小 Linux 虚拟机里。用完就停不留垃圾。二、第一步启用 WSL2Windows Subsystem for LinuxDocker Desktop 在 Windows 上依赖 WSL2 运行。如果你还没有开启2.1 管理员身份打开 PowerShell右键开始菜单 →Windows PowerShell (管理员)或终端 (管理员)2.2 安装 WSLwsl--install这条命令会自动做四件事启用虚拟机平台功能启用Windows Subsystem for Linux功能安装 WSL2 内核安装 Ubuntu 发行版安装完成后重启电脑。2.3 验证 WSL 版本重启后打开 PowerShell普通用户即可wsl--version应该看到类似输出WSL 版本: 2.7.8.0 内核版本: 6.18.33.1-1⚠️ 版本号无所谓关键是要看到 WSL 版本 ≥ 2.0如果你的 WSL 还是 v1wsl--set-default-version 22.4 常见问题Q公司电脑、域控环境能装吗A大部分可以。如果失败可能需要 IT 管理员在组策略中启用虚拟机平台。QWindows 10 能装吗AWindows 10 版本 2004内部版本 19041都可以。WinR →winver查看版本。三、第二步安装 Docker Desktop3.1 下载打开官网https://www.docker.com/products/docker-desktop/点Download for Windows下载Docker Desktop Installer.exe约 600MB。3.2 安装双击安装包 → 一路下一步关键勾选✅ Use WSL 2 instead of Hyper-V如果没看到这个选项——说明 WSL2 没装好回到第二步。3.3 启动 Docker Desktop安装完成后桌面会出现 Docker 图标蓝色小鲸鱼。双击启动右下角任务栏会出现小鲸鱼图标。首次启动需要 1-2 分钟。启动完成后鲸鱼图标不再有动画鼠标悬停显示 “Docker Desktop is running”。3.4 验证打开 PowerShelldocker--version docker compose version docker run--rmhello-world第三条命令如果输出 “Hello from Docker!”说明 Docker 环境一切正常。四、第三步拉取需要的镜像我们 Day 4 项目需要三个服务PostgreSQL带 PGVector 扩展、Redis 和 MySQL。4.1 拉取镜像可选docker compose 会自动拉首次启动会先拉镜像比较慢约 2-5 分钟之后启动只需要几秒。记得镜像地址要切换为国内的在设置的docker engine里{builder:{gc:{defaultKeepStorage:20GB,enabled:true}},experimental:false,features:{buildkit:true},registry-mirrors:[https://docker.mirrors.ustc.edu.cn,https://hub-mirror.c.163.com,https://mirror.baidubce.com,https://docker.rainbond.cc,https://docker.m.daocloud.io,https://dockerproxy.com,https://docker.nju.edu.cn,https://jocker.hust.edu.cn,https://hubble.kpse.top]}docker pull pgvector/pgvector:pg17 docker pull redis:7-alpine docker pull mysql:8.0pgvector/pgvector:pg17是官方维护的 PostgreSQL 17 PGVector 扩展镜像。比普通postgres:17多了一个向量检索扩展是 RAG 知识库的核心。4.2 镜像是什么可以理解为软件的安装包快照——不是 zip而是一个完整的小 Linux 文件系统里面已经装好了 PostgreSQL 和 PGVector 扩展解压即用。四、创建 docker-compose 配置文件新建文件docker-compose.yml放哪里都行建议放项目目录或桌面version:3.9services:# PostgreSQL PGVector postgres:image:pgvector/pgvector:pg17container_name:ai-postgresrestart:unless-stoppedports:-5432:5432environment:POSTGRES_DB:aidb# 自动创建这个数据库POSTGRES_USER:ai# 数据库用户名POSTGRES_PASSWORD:password# 数据库密码学习用生产请改volumes:-pgdata:/var/lib/postgresql/data# 数据持久化不丢数据healthcheck:test:[CMD-SHELL,pg_isready -U ai -d aidb]interval:10stimeout:5sretries:5# MySQL mysql:image:mysql:8.0container_name:ai-mysqlrestart:unless-stoppedports:-3307:3306# 映射到 3307 避免和本地 MySQL 冲突environment:MYSQL_ROOT_PASSWORD:root123MYSQL_DATABASE:ai_logs# 自动创建的业务数据库command:---character-set-serverutf8mb4---collation-serverutf8mb4_unicode_ci---default-authentication-pluginmysql_native_passwordvolumes:-mysqldata:/var/lib/mysqlhealthcheck:test:[CMD,mysqladmin,ping,-h,localhost,-uroot,-proot123]interval:10stimeout:5sretries:5# Redis redis:image:redis:7-alpinecontainer_name:ai-redisrestart:unless-stoppedports:-6379:6379volumes:-redisdata:/datahealthcheck:test:[CMD,redis-cli,ping]interval:10stimeout:3sretries:5volumes:pgdata:mysqldata:redisdata:逐行解释配置项含义image: pgvector/pgvector:pg17使用哪个镜像软件包container_name: ai-postgres容器名称方便查看和操作restart: unless-stopped除非手动停止否则自动重启开机自启ports: 5432:5432把容器的 5432 端口映射到 Windows 的 5432 端口——这样代码连localhost:5432就等于连容器volumes: - pgdata:/var/lib/...数据卷把 PG 的数据库文件存在 Docker 管理的独立空间里。删了容器数据还在。healthcheck健康检查每隔 10 秒 ping 一次确认数据库可用五、启动容器在docker-compose.yml所在目录下docker compose up-d-d表示后台运行detached。验证dockerps应该看到三个容器都在运行STATUS 列显示healthyCONTAINER ID IMAGE STATUS 36d2ff2b59 pgvector/pgvector:pg17 Up 5 minutes (healthy) 49ea93634c redis:7-alpine Up 5 minutes (healthy) ad7f3b21e8 mysql:8.0 Up 5 minutes (healthy)六、常用 Docker 命令速查命令作用docker ps查看运行中的容器docker ps -a查看所有容器包括已停止的docker compose up -d启动所有服务后台docker compose down停止并删除所有服务docker compose restart重启所有服务docker compose logs查看日志docker compose logs postgres只看 PostgreSQL 日志docker exec -it ai-postgres psql -U ai -d aidb进入 PG 命令行docker compose pull拉取镜像最新版本Docker Desktop 小鲸鱼图标图标状态含义 静止正常运行 动画正在启动中 红色/黄色出错了右键 → Quit完全退出 Docker七、测试数据库连接7.1 命令行测试docker exec-it ai-postgres psql-U ai-d aidb进入后试试-- 查看 PGVector 扩展是否启用SELECT*FROMpg_extensionWHEREextnamevector;-- 看看有哪些表\dt-- 退出\q7.2 IDEA 连接测试如果你用 IntelliJ IDEA Ultimate右侧 → Database → → Data Source → PostgreSQL填入Host:localhostPort:5432Database:aidbUser:aiPassword:password点 Test Connection → 看到绿色对勾 → OK7.3 MySQL 连接测试命令行测试docker exec-it ai-mysql mysql-uroot-proot123 ai_logs进入后试试-- 查看数据库SHOWDATABASES;-- 查看字符集SHOWVARIABLESLIKEcharacter%;-- 预期看到 utf8mb4 — 支持 emoji 和中文-- 退出\q7.4 IDEA 连接 MySQL右侧 → Database → → Data Source → MySQL填入Host:localhostPort:3307注意不是默认 3306我们映射到了 3307Database:ai_logsUser:rootPassword:root123点 Test Connection → 看到绿色对勾 → OK7.5 代码连接测试Spring Bootapplication.yml连接配置PostgreSQLspring:datasource:url:jdbc:postgresql://localhost:5432/aidbusername:aipassword:passwordMySQLDruid 连接池spring:datasource:type:com.alibaba.druid.pool.DruidDataSourceurl:jdbc:mysql://localhost:3307/ai_logs?useUnicodetruecharacterEncodingutf-8serverTimezoneAsia/Shanghaiusername:rootpassword:root123driver-class-name:com.mysql.cj.jdbc.Driverdruid:initial-size:5min-idle:5max-active:20max-wait:60000# 监控页: http://localhost:8088/druid/stat-view-servlet:enabled:truelogin-username:adminlogin-password:admin123# 慢 SQL 监控filter:stat:enabled:trueslow-sql-millis:2000log-slow-sql:true⚠️端口提示MySQL 映射到 3307而非默认 3306是为了避免与 Windows 本地已安装的 MySQL 冲突。代码里连localhost:3307即可。八、常见问题与解决Q1Docker Desktop 启动报 “WSL integration” 错误解决管理员 PowerShell 执行wsl --update然后重启 Docker Desktop。Q2容器启动后马上退出解决看日志docker compose logs postgres常见原因端口被占用、磁盘空间不足、WSL2 内存不足。Q3WSL2 内存吃太多解决在C:\Users\你的用户名\.wslconfig中限制内存[wsl2] memory4GB processors2然后 PowerShell 执行wsl --shutdown再重启 Docker Desktop。九、卸载 Docker Desktop如果需要设置 → 应用 → 找到 Docker Desktop → 卸载如果想彻底清除所有数据镜像、容器、卷wsl--unregister docker-desktop wsl--unregister docker-desktop-data十、总结你现在拥有了能力说明✅ Docker Desktop容器运行环境✅ WSL2 (Ubuntu)Docker 的后端 Linux 内核✅ PostgreSQL 17 PGVector向量数据库知识点RAG 底座✅ MySQL 8.0业务数据库日志、订单、知识库端口 3307✅ Redis 7缓存和会话管理✅ 数据持久化volumes保证删容器不丢数据✅ 健康检查healthcheck保证服务真的可用才对外暴露