目录
一、启用 WSL 2
1: 启用 WSL 功能
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
2: 启用虚拟机平台功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
3: 重启计算机
Restart-Computer
4: 下载并安装 Linux 发行版
- 下载 Ubuntu .tar.gz 包:Ubuntu WSL 镜像
- 导入 .tar.gz 作为 WSL 分发
wsl --import Ubuntu F:\WSL\Ubuntu\ F:\Ubuntu\ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz
- Ubuntu:分发名称(可自定义)
- F:\WSL\Ubuntu\:自定义存储 WSL 文件的目录
- F:\Ubuntu\ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz:下载的 tar 包路径
5: 设置默认 WSL 版本
wsl --set-default-version 2
二、优化WSL2性能
要优化 WSL 2 的性能,可以通过创建
.wslconfig
文件来调整内存、CPU 核数、交换空间等配置。
1. 创建 .wslconfig
文件
-
进入用户目录:
C:\Users\<你的用户名>\
-
新建一个文本文件,命名为
.wslconfig
(注意前面的.
是文件名的一部分)。 -
粘贴以下配置(按需调整):
[wsl2]
memory=12GB # 限制 WSL 2 最大内存使用量(默认 80% 物理内存)
processors=10 # 分配 CPU 核心数(默认全部)
swap=0 # 禁用交换空间(默认 25% 内存大小)
localhostForwarding=true # 允许 localhost 访问 WSL 服务
nestedVirtualization=true # 允许 WSL 2 内运行虚拟机(如 Docker)
参数说明:
memory
:建议不超过物理内存的 60%processors
:建议不超过 CPU 物理核心数(如 12 核 CPU 可设10
)。swap=0
:禁用交换文件提升性能(但可能增加 OOM 风险)。nestedVirtualization
:如果要在 WSL 2 内运行 Docker/KVM 需启用。
- 保存文件(确保文件名是
.wslconfig
,不是.wslconfig.txt
)。
2. 应用配置
- 关闭所有 WSL 实例:
wsl --shutdown
- 重新启动 Ubuntu:
wsl -d Ubuntu
3. 验证配置是否生效
进入 WSL 2 后运行:
free -h # 查看内存
nproc # 查看 CPU 核心数
三、下载安装 Docker Desktop
1: 下载
访问 Docker 官方网站 下载
2:安装 Docker Desktop
- 勾选 “Use WSL 2 instead of Hyper-V”(WSL 2 性能更好)。
- 大多数(尤其是开发 Linux 应用)都不用勾选(默认 Linux 容器足够,这样资源占用更低),如需运行的应用依赖 Windows 内核( IIS 或 .NET Framework)则必须勾选
- 如果安装时未勾选但后续需要 Windows 容器:打开 Docker Desktop → 右键任务栏 Docker 图标 → “Switch to Windows Containers” → Docker 会自动下载所需组件。
- 勾选 “Add shortcut to desktop”(创建桌面快捷方式)。
3. 点击 “OK”,等待安装完成。
四、启动 Docker Desktop
- 首次启动时会提示接受服务条款,点击 Accept
- 配置加速地址:Settings → Docker Engine 配置 → 在 JSON 配置中添加下面内容
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
- 验证 Docker 是否正常运行
- 打开 PowerShell 或 命令提示符(CMD)。
- 运行以下命令:
docker --version
docker run hello-world
看到 Hello from Docker!
,说明 Docker 可以正常拉取和运行容器。
五、部署 PostgreSQL & Redis
方法一:docker run
如果加载比较慢的话可以按照之前的方法去加一下镜像源:https://9cpn8tt6.mirror.aliyuncs.com
PostgreSQL
拉取镜像并运行容器:
docker run --name postgres -e POSTGRES_PASSWORD=mypassword -e POSTGRES_USER=myuser -e POSTGRES_DB=mydb -p 5432:5432 -v pgdata:/var/lib/postgresql/data -d postgres:latest
参数说明:
-e POSTGRES_PASSWORD
: 设置超级用户密码(必填)。-e POSTGRES_USER
: 可选自定义用户名(默认postgres
)。-e POSTGRES_DB
: 可选初始数据库名(默认与用户名相同)。-p 5432:5432
: 主机端口映射到容器端口。-v pgdata:/var/lib/postgresql/data
: 数据卷持久化存储。-d
:后台运行容器postgres:latest
:使用的镜像(默认拉取最新版)
Redis
拉取镜像并运行容器:
docker run --name redis -p 6379:6379 -v redisdata:/data -d redis:latest redis-server --save 60 1 --loglevel warning
参数说明:
-v redisdata:/data
: 数据卷持久化存储。-p 6379:6379
: 主机端口映射到容器端口。--save 60 1
: 每60秒若至少1次写入则触发快照。--loglevel warning
: 设置日志级别。
方法二:docker-compose.yml(Docker Compose )
- 在PowerShell中导航到目标目录
创建 docker-compose.yml
文件:
@"
version: '3'
services:
postgres:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mypassword
POSTGRES_USER: myuser
POSTGRES_DB: mydb
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:latest
command: redis-server --save 60 1 --loglevel warning
ports:
- "6379:6379"
volumes:
- redisdata:/data
volumes:
pgdata:
redisdata:
"@ | Out-File -Encoding utf8 docker-compose.yml
验证:
cat docker-compose.yml
运行:
docker-compose up -d
验证容器运行状态
docker ps
(两种方法功能对比)
方式 | docker run 命令 | docker-compose.yml 文件 |
---|---|---|
镜像拉取 | 需手动执行 docker pull 或自动拉取 | 自动拉取缺失的镜像 |
容器启动 | 需手动输入长串 docker run 命令 | 通过 docker-compose up -d 一键启动所有服务 |
配置管理 | 参数写在命令行中,易丢失 | 所有配置集中写入 YAML 文件,可版本控制 |
多容器协作 | 需手动管理网络、卷、依赖关系 | 自动处理容器间的网络、依赖顺序 |
环境变量 | 通过 -e 传递,硬编码在命令中 | 可在 YAML 中定义或引用外部 .env 文件 |
数据卷/网络 | 需手动创建和管理 | 自动创建并在 YAML 中声明式定义 |
六、连接数据库
PostgreSQL
- 主机:
localhost
- 端口:
5432
- 用户名/密码: 根据
-e
参数设置(如myuser/mysecretpassword
)。 - 使用工具如
pgAdmin
、DBeaver
或命令行psql
连接。
docker exec -it postgres psql -U myuser -d mydb
Redis
- 主机:
localhost
- 端口:
6379
- 使用
redis-cli
或工具如RedisInsight
连接:
docker exec -it redis redis-cli
七、其他常用命令
docker常用管理命令
- 停止/启动容器:
docker stop postgres redis docker start postgres redis
- 查看日志:
docker logs postgres docker logs redis
- 删除容器(谨慎操作):
docker rm -f postgres redis docker volume rm pgdata redisdata
常用 Compose 命令
命令 | 作用 |
---|---|
docker-compose up -d | 启动所有服务(后台运行) |
docker-compose down | 停止并删除所有容器 |
docker-compose ps | 查看运行中的服务 |
docker-compose logs -f | 实时查看日志 |
docker-compose restart | 重启服务 |