WSL2中安装Docker—部署Docker Engine方案
目录
一、介绍
二、与Docker Desktop区别
三、开启WSL2服务
四、WSL2的常用命令
五、安装Ubuntu系统
六、安装Docker及可视化工具
七、WSL2与宿主机共享相同的网络
1、环境要求
2、配置 .wslconfig 文件
3、重启 WSL2
4、验证镜像网络模式
5、解决常见问题
一、介绍
在WSL2中安装Docker主要有以下两种常见的方法:使用Docker Desktop for Windows(配置WSL2作为后端)和直接在WSL2中安装Docker Engine。本文详细介绍如何在WSL2中安装Docker Engine,并探讨这种方法相对于使用Docker Desktop的优势和注意事项。
实验环境为Windows11 专业版,Linux版本为Ubuntu。
二、与Docker Desktop区别
Docker是一种广泛使用的容器化平台,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,以便在任何地方都能够以相同的方式运行。在Windows操作系统上,Docker Desktop是一种流行的Docker安装方式,它提供了一个用户友好的图形界面,使得安装和管理Docker变得非常简单,但它同时存在一些局限性和不完善的地方。
- 一些功能在Docker Desktop上可能无法完全发挥作用,或者仍处于试验阶段,这可能会影响到使用体验。
- Docker Desktop作为一个独立的应用程序,会占用一定的系统资源,并且可能与其他应用程序产生冲突
为了解决这些问题,一种替代方案是在Windows Subsystem for Linux 2(WSL2)中直接安装Docker Engine。通过在WSL2中安装Docker Engine,开发者可以获得更原生的Docker体验,并且可以避免Docker Desktop的一些限制和问题。
三、开启WSL2服务
1、点击【启动或关闭 Windows 功能】
2、勾选【适用于 Linux 的 Windows 子系统】和【虚拟机平台】这两项
3、勾选后必须要重启系统才能生效
4、按 Win+X
启动 终端(管理员)
5、设置WSL的版本为WSL2
wsl --set-default-version 2
6、更新WSL为最新版
wsl --update
四、WSL2的常用命令
为了便于读者进行相关调试,这里顺便介绍一些WSL中常用的命令
#执行以下命令将启用运行WSL,并安装默认的Ubuntu发行版
wsl --install
#如果想安装其他发行版,可以使用-d标志
wsl --install -d Ubuntu-24.04
#要了解当前WSL2支持的Linux发行版,可以使用这个命令
wsl --list --online
#列出已安装的 WSL 发行版
wsl -l
#设置为默认使用系统版本,例如设置22.04的为默认版本
wsl --set-default Ubuntu-22.04
#关闭所有正在运行的 WSL 实例
wsl --shutdown
#注销并删除一个 WSL 发行版
wsl --unregister
#更新 WSL 到最新版本
wsl --update
#显示 WSL 的状态,包括版本信息
wsl --status
#从 tar 文件导入 WSL 发行版
wsl --import
#将 WSL 发行版导出到 tar 文件
wsl --export
#终止指定的 WSL 发行版
wsl --terminate
五、安装Ubuntu系统
#执行以下命令将启用运行WSL,并安装默认的Ubuntu发行版
wsl --install
#如果想安装其他发行版,可以使用-d标志
wsl --install -d Ubuntu-24.04
#要了解当前WSL2支持的Linux发行版,可以使用这个命令
wsl --list --online
1、查看当前WSL2可安装的Linux发行版
2、安装Ubuntu-24.04
版本
wsl --install Ubuntu-24.04
3、在WIndows Terminal上,可以找到安装的发行版本
4、系统是首次启动时,需要设置一个用户名和密码
5、在Windows Termimal上,进入默认WSL系统和退出WSL系统
#Windows终端进入默认WSL系统命令
bash
#WSL系统回退Windows终端命令
exit
六、安装Docker及可视化工具
WSL2中安装好Ubuntu系统后,Docker的安装与直接在Ubuntu物理机上是一样的。
Docker及可视化工具的安装可参考:Ubuntu上安装 Docker及可视化管理工具
七、WSL2与宿主机共享相同的网络
默认情况下,WSL2 使用 NAT 网络模式,与宿主机处于不同的网段。默认的网络配置可能会导致一些网络互通性问题,例如无法通过 localhost 访问 WSL2 中的服务,或者在局域网中无法访问 WSL2 中的服务。为了解决这些问题,Windows 11 23H2 及以上版本引入了 networkingMode=mirrored 配置,使 WSL2 与 Windows 主机共享相同的网络配置。接下来将详细介绍如何设置 WSL2 Ubuntu 的 networkingMode=mirrored,并解决常见问题。
1、环境要求
在开始之前,请确保满足以下环境要求
- Windows 版本:Windows 11 23H2 或更高版本
- WSL 版本:WSL2 2.0.0 或更高版本
可以通过以下命令检查 WSL 版本
wsl --version
如果版本低于 2.0.0,可以通过以下命令更新
wsl --update --pre-release
2、配置 .wslconfig
文件
2.1、创建或编辑 .wslconfig
文件
打开 PowerShell 或命令提示符,输入以下命令创建或编辑 .wslconfig
文件:
notepad $env:USERPROFILE.wslconfig
如果文件已存在,直接编辑即可。
2.2、添加镜像网络配置
在 .wslconfig
文件中添加以下内容:
[wsl2]
networkingMode=mirrored # 启用镜像网络模式,使 WSL2 与 Windows 共享网络
dnsTunneling=true # 启用 DNS 隧道,提高与 VPN 等复杂网络的兼容性
autoProxy=true # 同步 Windows 的代理设置到 WSL2
firewall=true # WSL同步Windows防火墙规则
[experimental]
autoMemoryReclaim=gradual # 可以在gradual 、dropcache 、disabled之间选择,开启会造成WSL中Docker启动异常
sparseVhd=true # 自动清理磁盘空间
hostAddressLoopback=true # 允许通过主机的局域网 IP 访问 WSL2 中的服务
- networkingMode=mirrored:启用镜像网络模式,使 WSL2 与 Windows 共享网络。
- dnsTunneling=true:启用 DNS 隧道,提高与 VPN 等复杂网络的兼容性。
- autoProxy=true:同步 Windows 的代理设置到 WSL2。
- firewall=true:WSL同步Windows 防火墙规则
- autoMemoryReclaim=gradual # 可以在gradual 、dropcache 、disabled之间选择,开启会造成WSL中Docker启动异常
- sparseVhd=true # 自动清理磁盘空间
- hostAddressLoopback=true:允许通过主机的局域网 IP 访问 WSL2 中的服务
3、重启 WSL2
完成配置后,重启 WSL2 以应用更改:
wsl --shutdown
等待几秒后重新启动 WSL2。
4、验证镜像网络模式
在 WSL2 中运行以下命令查看 IP 地址:
ip addr show eth0
如果 IP 地址与 Windows 主机的 IP 地址一致,说明镜像网络模式已启用。
5、解决常见问题
5.1、Docker 容器无法通过 localhost 访问
如果使用 Docker,需要在 /etc/docker/daemon.json
中添加以下配置:
{
"iptables": false
}
然后重启 Docker 服务:
sudo service docker restart