
如果您希望在 Windows 系统中利用 WSL2 作为后端运行 Docker 容器开发环境,则需绕过传统 Docker Desktop 的 Hyper-V 依赖,转而启用 WSL2 原生集成模式。以下是实现该目标的具体步骤:
一、启用 WSL2 并安装 Linux 发行版
WSL2 是 Docker 运行的底层前提,必须确保其已正确启用并完成初始化。系统需满足 Windows 10 版本 2004(Build 19041)或更高版本,或 Windows 11 全版本支持。
1、以管理员身份打开 PowerShell,执行:wsl –install。
2、若系统未启用虚拟机平台与 Windows 子系统功能,手动运行:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 和 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart。
3、重启计算机后,运行 wsl –set-default-version 2 设置默认版本为 WSL2。
4、从 Microsoft Store 安装 Ubuntu 22.04 LTS 或 Debian,启动并完成用户初始化。
二、配置 WSL2 启用 systemd 支持
Docker 守护进程(dockerd)依赖 systemd 管理服务生命周期,而 WSL2 默认禁用 systemd。需通过修改发行版配置文件启用。
1、编辑 WSL2 发行版的 /etc/wsl.conf 文件,添加以下内容:
[boot]
systemd=true
2、关闭当前 WSL2 实例:wsl –shutdown。
3、重新启动该发行版终端,执行 ps -p 1 -o comm=,确认输出为 systemd 而非 init。
三、在 WSL2 中安装 Docker Engine(非 Docker Desktop)
跳过 Docker Desktop 安装包,直接在 WSL2 Linux 环境中部署原生 Docker Engine,避免 Windows 层代理与端口转发冲突。
1、更新软件包索引:sudo apt update。
2、安装必要依赖:sudo apt install -y ca-certificates curl gnupg lsb-release。
3、添加 Docker 官方 GPG 密钥:sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg。
4、添加稳定版仓库源:echo “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null。
5、再次更新并安装:sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin。
6、将当前用户加入 docker 组:sudo usermod -aG docker $USER,然后退出终端并重新启动 WSL2 实例。
四、验证 Docker 守护进程与容器运行能力
确保 dockerd 已由 systemd 自动拉起,并能响应客户端请求。此时无需 Windows 主机侧安装任何 Docker CLI,所有操作均在 WSL2 内完成。
1、检查服务状态:sudo systemctl status docker,确认显示 active (running)。
2、测试守护进程连通性:docker info | grep “Server Version”。
3、运行验证容器:docker run –rm hello-world,观察是否输出欢迎消息及清理日志。
4、运行交互式容器:docker run -it –rm ubuntu:22.04 bash -c “echo ‘Docker is working in WSL2’; uname -r”,确认内核版本为 WSL2 提供的 linux-msft-wsl。
五、配置 Windows 主机访问 WSL2 中的容器端口
WSL2 使用虚拟网络接口,默认 IP 地址动态分配,需建立端口转发规则,使 Windows 浏览器或工具可访问容器暴露的服务(如 localhost:3000)。
1、获取 WSL2 的主机 IP:ip addr show eth0 | grep -oP ‘(?<=inet\s)\d+(\.\d+){3}’,记下类似 172.x.x.x 的地址。
2、在 Windows PowerShell(管理员)中执行端口转发(以 3000 端口为例):netsh interface portproxy add v4tov4 listenport=3000 listenaddress=127.0.0.1 connectport=3000 connectaddress=172.x.x.x。
3、设置防火墙放行:New-NetFirewallRule -DisplayName “WSL2 Docker Port 3000” -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3000。
4、启动一个监听 3000 端口的容器:docker run -d -p 3000:3000 –name webtest nginx。
5、在 Windows 浏览器中访问 http://localhost:3000,确认返回 Nginx 欢迎页。

评论(0)