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
    在 Windows Subsystem for Linux (WSL) 中安装 Docker 需要一些特定的步骤,以确保 Docker 能够正确运行。以下是在 WSL安装 Docker 的详细指南: ### 1. 启用 WSL安装 Linux 发行版 首先,确保你已经启用了 WSL安装了一个 Linux 发行版(如 Ubuntu)。 ```powershell # 启用 WSL 功能 wsl --install # 检查 WSL 版本 wsl --list --verbose ``` 如果你使用的是 Windows 10 或 Windows 11,并且尚未启用 WSL,可以通过上述命令启用它。安装完成后,你可以选择默认的 Linux 发行版,或者通过 Microsoft Store 安装你喜欢的发行版(如 Ubuntu、Debian 等)。 ### 2. 更新系统并安装依赖项 进入你的 WSL 环境后,首先更新系统并安装必要的依赖项: ```bash sudo apt update && sudo apt upgrade -y sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-core ``` ### 3. 添加 Docker 官方 GPG 密钥 接下来,添加 Docker 的官方 GPG 密钥以验证软件包的完整性: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ``` ### 4. 添加 Docker APT 仓库 根据你的 Ubuntu 版本,将 Docker 的 APT 仓库添加到系统的源列表中。假设你使用的是较新的 Ubuntu 版本(如 Focal 或 Jammy),可以使用以下命令: ```bash echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` ### 5. 安装 Docker 引擎 现在可以更新 APT 缓存并安装 Docker 引擎: ```bash sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io ``` 如果遇到 `E: Unable to locate package docker-ce` 错误,请确保你正确地添加了 Docker 的 APT 仓库,并且使用的 Ubuntu 版本与仓库中的版本匹配[^1]。 ### 6. 验证 Docker 安装 安装完成后,可以通过以下命令验证 Docker 是否成功安装并运行: ```bash sudo systemctl start docker sudo systemctl enable docker docker --version sudo docker run hello-world ``` 如果一切正常,你应该会看到一条欢迎信息,表明 Docker 已经成功安装并在 WSL 中运行。 ### 7. 可选:配置非 root 用户使用 Docker 为了避免每次使用 Docker 时都需要输入 `sudo`,可以将当前用户添加到 `docker` 组: ```bash sudo usermod -aG docker $USER ``` 然后退出并重新登录,以便使组更改生效。 ### 数据卷位置 DockerWSL 中创建的数据卷通常位于以下路径中,具体取决于 Docker 的版本: - 对于 Docker Engine v20.10 及以上版本: ``` \\wsl$\docker-desktop-data\data\docker\volumes ``` - 对于 Docker Engine v19.03 及以下版本: ``` \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\ ``` 这些路径可以直接在 Windows 文件资源管理器中访问,格式为 `\\wsl$`,表示 WSL 文件系统的根目录[^2]。 ### 常见问题排查 #### Docker Desktop 启动失败 如果你使用的是 Docker Desktop 并且在启动时遇到类似 `Failed to set version to docker-desktop exit code -1` 的错误,可能是因为 WSL2 内核版本不兼容或 Hyper-V 未正确安装。解决方法包括: - 确保 WSL2 已启用并且是默认版本。 - 检查是否已正确安装 Docker Desktop 的 WSL2 支持组件。 - 如果使用的是 Windows 10 Home Edition,确保已手动安装 Hyper-V 支持[^3]。 ---
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值