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、开启CPU虚拟化

打开任务管理器(Ctrl+Alt+Esc),切换到性能,可以在如图中看到CPU虚拟化的状态,默认是禁用,需要进入Bios开启

2、启用虚拟机平台功能

点击【启动或关闭 Windows 功能】

勾选【适用于 Linux 的 Windows 子系统】和【虚拟机平台】这两项

勾选后必须要重启系统才能生效

3、设置WSL的版本为WSL2

按  Win+X 启动 终端(管理员)

设置WSL的版本为WSL2

wsl --set-default-version 2

更新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 <DistroName>

#更新 WSL 到最新版本
wsl --update

#显示 WSL 的状态,包括版本信息
wsl --status

#从 tar 文件导入 WSL 发行版
wsl --import <DistroName> <InstallLocation> <FileName>

#将 WSL 发行版导出到 tar 文件
wsl --export <DistroName> <FileName>

#终止指定的 WSL 发行版
wsl --terminate <DistroName>

五、安装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 -d 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
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值