Windows怎么在WSL2中运行Docker_Windows如何用WSL2后端运行Docker容器开发环境【实战】-1

如果您希望在 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 欢迎页。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。