WSL2上无需 Docker Desktop使用Docker compose并配置镜像网络
00-环境信息:
在CMD窗口执行以下命令查看系统版本
winver
确保正在使用 WSL2
C:\Users\<你的用户名>>wsl --version
WSL 版本: 2.4.13.0
内核版本: 5.15.167.4-1
WSLg 版本: 1.0.65
MSRDC 版本: 1.2.5716
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows 版本: 10.0.22621.4317
列出可用的 WSL 发行版
C:\Users\<你的用户名>>wsl --list
适用于 Linux 的 Windows 子系统分发:
Ubuntu-22.04 (默认)
01-安装准备
更新软件包
sudo apt-get update && sudo apt-get upgrade -y
02-开始安装
使用本地文件包安装Docker Engine,下载地址如下:
链接: https://pan.baidu.com/s/1Ek3mmKKwbfMguu6Uh7P5Kw?pwd=amg6 提取码: amg6
sudo dpkg -i containerd.io_1.6.32-1_amd64.deb
sudo dpkg -i docker-ce-cli_26.1.3-1~ubuntu.22.04~jammy_amd64.deb
sudo dpkg -i docker-ce_26.1.3-1~ubuntu.22.04~jammy_amd64.deb
安装docker-compose
sudo mkdir -p ~/.docker/cli-plugins
sudo cp docker-compose-linux-x86_64 ~/.docker/cli-plugins/
sudo mv ~/.docker/cli-plugins/docker-compose-linux-x86_64 ~/.docker/cli-plugins/docker-compose
sudo chmod +x ~/.docker/cli-plugins/docker-compose
将您的用户添加到 docker 组。这允许您无需使用 sudo 提升权限或输入密码即可运行 Docker 命令
sudo usermod -aG docker $USER
验证 Docker Engine 和 Compose 已成功安装
docker --version
docker compose version
配置 Docker 守护进程在 WSL2 中自动启动,先检查是否已启用
cat /etc/wsl.conf
[boot]
systemd=true
运行 Docker 引擎服务并启用自动启动
sudo systemctl enable --now docker.service
查看服务状态systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2025-05-06 11:08:20 CST; 39min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 15827 (dockerd)
Tasks: 10
Memory: 40.3M
CPU: 631ms
CGroup: /system.slice/docker.service
└─15827 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
03-配置网络
在宿主机C:\Users\<你的用户名>目录下新建文件.wslconfig
,文件内容如下
[wsl2]
#禁用WSL2的交换分区(Swap),适用于物理内存充足或需要严格限制内存使用的场景
swap=0
#限制 WSL2 实例最大可用内存为 8GB,防止其占用过多主机资源
memory=32G
#启用DNS隧道功能,动态同步 Windows 主机的 DNS 配置
dnsTunneling=true
#关闭WSL2的防火墙集成,确保网络流量不受Windows防火墙规则约束
firewall=false
#自动同步Windows主机的代理设置(如 Clash 或 VPN 代理),避免WSL2内手动配置代理
autoProxy=true
#启用镜像网络模式,使WSL2与Windows主机的网络接口完全一致
networkingMode=mirrored
[experimental]
#允许 WSL2 通过环回地址(如 127.0.0.1)访问 Windows 主机的服务
hostAddressLoopback=true
注意:镜像网络模式需 Windows 11 22H2 或更高版本及 WSL 2.0.0+ 内核支持
配置完成以后在CMD窗口通过以下命令关闭WSL
wsl --shutdown
等待8秒
后重新启动WSL
04-验证服务
部署一个windows容器验证容易WSL内部服务是否可达
新建一个windows.yml文件
services:
windows:
image: dockurr/windows
container_name: windows
environment:
RAM_SIZE: "8G"
CPU_CORES: "4"
USERNAME: "admin"
PASSWORD: "hello@windows"
DISK_SIZE: "80G"
LANGUAGE: "Chinese"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 33890:3389/tcp
- 33890:3389/udp
volumes:
- ./windows:/storage
#- <你的windows镜像文件>:/boot.iso
restart: always
stop_grace_period: 2m
通过如下命令启动容器
docker compose -f windows.yml up -d
稍等片刻即可打开浏览器访问http://<你的局域网IP>:8006
注意:如果是初次部署windows容器要去掉yml文件中镜像文件所在行注释,然后等待30分钟左右才能部署成功