基于WSL2的docker安装指南

01、WSL简介

什么是WSL2?

WSL2Windows Subsystem for Linux 2 的缩写,中文可以叫做 适用于 Linux 的 Windows 子系统 2。简单来说,它是一个让你在 Windows 操作系统中运行完整的 Linux 环境的工具,而且这个 Linux 环境拥有非常好的性能和兼容性。

核心特点:

  • 真正的 Linux 内核: 与第一代 WSL 不同,WSL2 包含了一个真正的 Linux 内核。这意味着它不是像虚拟机那样完全独立运行,而是通过虚拟化技术,将一个轻量级的虚拟机集成到 Windows 中,让 Linux 能够直接利用你的电脑硬件,从而获得接近原生 Linux 的性能。
  • 出色的性能: 由于使用了真正的 Linux 内核和虚拟化技术,WSL2 在文件系统性能、网络性能以及系统调用兼容性方面都比 WSL1 有了显著的提升。这对于运行开发工具、容器(如 Docker)以及各种 Linux 应用程序来说,体验会更好。
  • 完整兼容性: 你可以在 WSL2 中运行几乎所有你熟悉的 Linux 命令、工具和应用程序,包括各种发行版(如 Ubuntu、Debian、Kali Linux 等)。
  • 与 Windows 深度集成: 尽管它是一个 Linux 环境,但 WSL2 与 Windows 的集成度非常高。你可以在 Windows 文件资源管理器中直接访问 Linux 文件系统,也可以在 Linux 终端中访问 Windows 文件,并且可以直接从 Windows 启动 Linux 应用程序。
  • Docker 友好: 对于开发者来说,WSL2 是运行 Docker 的理想选择。Docker Desktop for Windows 已经默认利用 WSL2 后端,这大大简化了在 Windows 上使用 Docker 的体验。但是我这并不推荐使用Docker Desktop for Windows。原因很简单,不好用,我用过,就是一坨。不如自己敲命令来得实在。

简单类比:

你可以把 WSL2 想象成一个运行在 Windows 里的“小盒子”,这个盒子里装了一个完整的 Linux 操作系统。这个“小盒子”非常高效,而且能和 Windows 共享资源、互相访问文件,就像它们是同一个系统的一部分一样。

总结:

WSL2 对于需要同时使用 Windows 和 Linux 的用户(尤其是开发者、系统管理员和学生)来说,是一个非常强大的工具。它省去了安装双系统或传统虚拟机的麻烦,提供了一个高效、便捷且功能强大的 Linux 开发和运行环境。

02、WSL2安装指南

先决条件:必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。如果不是上述的的Windows系统,可以右上角点叉了。

注意:安装过程在某些国家可能会遇到下载速度及其慢的情况,这个时候请使用网络代理工具。建议使用TUN模式,接管电脑的全部流量。

启用WSL和虚拟平台功能

打开CMD窗口,运行以下两个命令:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

注意:运行过程比较漫长,大概15分钟左右,请耐心等待。

运行完成后,效果如下:

PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

部署映像服务和管理工具
版本: 10.0.26100.1150

映像版本: 10.0.26100.3775

启用一个或多个功能
[==========================100.0%==========================]
操作成功完成。
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

部署映像服务和管理工具
版本: 10.0.26100.1150

映像版本: 10.0.26100.3775

启用一个或多个功能
[==========================100.0%==========================]
操作成功完成。

提示操作成功之后,必须要重启电脑。

更新WSL

使用如下命令更新WSL到最新版本:

wsl --update

WSL2运行Ubuntu系统

使用如下命令查看所有在线的发行版:

wsl -l -v

image-20250724085335531

使用如下命令安装:

wsl --install Ubuntu-24.04

我这样就以Debian做演示,反正效果都一样。

image-20250724085538654

下载完毕,应该会自动进入WSL的配置界面:

image-20250724085634770

输入你的用户名,用户名自己取,但是不能是中文。然后输入密码,输入密码的时候不会显示,直接输入完毕回车就可以了。

image-20250724085810137

看到这个你就基本安装成功了。剩下的基本和Linux的操作一样了。如果你会,那就可以不用看后面的了。

优化wsl

现在安装的这个系统还是一个相当简陋的毛坯房,我们稍微优化一下。

配置镜像源

这一步,对很多小白来说可能是第一道砍。但是别慌,我有办法。

bash <(curl -sSL https://linuxmirrors.cn/main.sh)

输入这个就可以全自动换源了。是不是很方便,如果觉得好用,就去GitHub仓库点个star再走。仓库地址:LinuxMirrors

如果遇到这个情况,也好办:

image-20250724090335140

这是由于没有curl导致的,用命令安装一个curl就好了。看吧,换源是为了加速下载,换源第一步就是要下载。闭环了哈哈。

sudo apt install curl

该命令可能需要输入密码,输入你刚刚设置的密码就可以了。

我靠了,还有问题!

image-20250724090616232

遇到这个问题,需要先更新一下软件源:

sudo apt update

image-20250724090728726

这时候再运行刚才的下载命令,应该就没问题了。

image-20250724090812118

成功安装,哈哈哈!

这个时候再运行刚才的一键脚本,完成换源。

image-20250724090917458

记得再命令前面加上sudo,提升权限。

我服了,光是提权好像还不行,试着切换到root用户试一下,在此之前,先改一下root账户的密码:

sudo passwd root

输入密码还是不会显示,输入完毕回车就OK了。

然后切换到root用户下

su

image-20250724091334239

看到这个#号就说明你是root了,现在再运行那个换源脚本(我在想如果手动换可能已经换好了)。

image-20250724091455141

终于好了,选择一个源回车就OK了。我这里选择阿里源。然后一路回车就OK了。最后记得切换会普通用户,root用户权限太高不安全。

su <用户名>

image-20250724091741906

我真服了,自己名字打错了!草草草!

然后你可以根据自己的喜欢,美化一下终端,下几个好用的有意思的软件呀,玩玩就OK。我这展示几个。

  • neofetch
sudo apt install neofetch

image-20250724092047806

这里吐槽一下,neofetch有时候动画比较卡,我这里更推荐的是fastfetch具体安装步骤你们就自行百度吧。我记得不是直接apt install那么简单。

  • lolcat

这个就是把终端输出渲染成rainbow色。没啥用,纯玩。

sudo apt install lolcat

如何使用呢?在命令后面加上| lolcat就可以了。比如说:

image-20250724092648268

  • sl

小火车,纯玩具,哈哈。

sudo apt install sl

输入sl屏幕会有小火车开过来,配合lolcat效果炸裂。

PixPin_2025-07-24_09-29-09

后续如果个人需要,可以尝试去美化一下终端,我这推荐zsh。教学网上一大把,我就不赘述了。

03、docker安装指南

安装完wsl之后,接下来就可以安装docker了。原来wsl1安装docker会非常麻烦,但是wsl2更新了之后就非常方便了。

还是一行命令就完事了。并非一行

su

先切换到root用户

然后执行

bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

image-20250724101932444

还是使用阿里源,回车确认就完事了。然后选择docker的Registry的镜像源,就按它推荐的吧。我个人都是长期挂梯,基本没有用过啥镜像源。

image-20250724102133740

然后一路回车,就完成了。

然后你输入docker ps发行报错!是不是很难绷,哈哈哈。

image-20250724102321260

但是你在docker命令前面加个sudo也可以运行,如果不嫌弃麻烦,就这样用也可以。下面我教你如何不用加sudo也一样运行。

设置docker不用sudo命令

  1. 创建名为docker的用户组。如果之前有这个组就好报错,忽略即可。
sudo groupadd docker
  1. 将当前用户加入组dokcer:
sudo gpasswd -a ${USER} docker
  1. 重启docker服务,(生成环境慎用)
sudo systemctl restart docker
  1. 添加访问和执行权限:
sudo chmod a+rw /var/run/docker.sock
  1. 操作完毕,验证一下。

image-20250724103141602

非常完美!至此docker安装完毕。接下来是关于docker以及wsl的网络设置。这样就可以无感访问docker了。

镜像网络设置

貌似现在默认就是镜像网络了,选择性观看。

操作也很简单:

在Windows的C盘用户文件夹内,找到你的用户那个文件夹,然后在该文件夹下新建一个.wslconfig文件。文件内写入:

# 推荐的一些配置项如下
[wsl2]                      # 核心配置
autoProxy=true              # 是否强制 WSL2/WSLg 子系统使用 Windows 代理设置(请根据实际需要启用)
dnsTunneling=false          # WSL2/WSLg DNS 代理隧道,以便由 Windows 代理转发 DNS 请求(请根据实际需要启用)
firewall=true               # WSL2/WSLg 子系统的 Windows 防火墙集成,以便 Hyper-V 或者 Windows 筛选平台(WFP)能过滤子系统流量(请根据实际需要启用)
guiApplications=true        # 启用 WSLg GUI 图形化程序支持
ipv6=true                   # 启用 IPv6 网络支持
memory=4GB                  # 限制 WSL2/WSLg 子系统的最大内存占用
nestedVirtualization=true   # 启用 WSL2/WSLg 子系统嵌套虚拟化功能支持
networkingMode=mirrored     # 启用镜像网络特性支持
processors=8                # 设置 WSL2/WSLg 子系统的逻辑 CPU 核心数为 8(最大肯定没法超过硬件的物理逻辑核心数)
vmIdleTimeout=-1            # WSL2 VM 实例空闲超时关闭时间,-1 为永不关闭,根据参数说明,目前似乎仅适用于 Win11+

[experimental]                  # 实验性功能(按照过往经验,若后续转正,则是配置在上面的 [wsl2] 选节)
autoMemoryReclaim=gradual       # 启用空闲内存自动缓慢回收,其它选项:dropcache / disabled(立即/禁用)
hostAddressLoopback=true        # 启用 WSL2/WSLg 子系统和 Windows 宿主之间的本地回环互通支持
sparseVhd=true                  # 启用 WSL2/WSLg 子系统虚拟硬盘空间自动回收
bestEffortDnsParsing=true       # 和 dnsTunneling 配合使用,Windows 将从 DNS 请求中提取问题并尝试解决该问题,从而忽略未知记录(请根据实际需要启用)

wsl2现在开源了,不得不说微软还是牛皮的。然后你可以分别在wls里面使用ip addr命令查看你的ip,再在cmd里面使用ipconfig /all查看宿主机ip,如果是同一个ip,那么就完成了。

image-20250724115509281

image-20250724115556391

就像这个一样。快去试试吧。

04、docker基本使用指南