
基于WSL2的docker安装指南
基于WSL2的docker安装指南
01、WSL简介
什么是WSL2?
WSL2 是 Windows 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
使用如下命令安装:
wsl --install Ubuntu-24.04
我这样就以Debian做演示,反正效果都一样。
下载完毕,应该会自动进入WSL的配置界面:
输入你的用户名,用户名自己取,但是不能是中文。然后输入密码,输入密码的时候不会显示,直接输入完毕回车就可以了。
看到这个你就基本安装成功了。剩下的基本和Linux的操作一样了。如果你会,那就可以不用看后面的了。
优化wsl
现在安装的这个系统还是一个相当简陋的毛坯房,我们稍微优化一下。
配置镜像源
这一步,对很多小白来说可能是第一道砍。但是别慌,我有办法。
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
输入这个就可以全自动换源了。是不是很方便,如果觉得好用,就去GitHub仓库点个star再走。仓库地址:LinuxMirrors
如果遇到这个情况,也好办:
这是由于没有curl导致的,用命令安装一个curl就好了。看吧,换源是为了加速下载,换源第一步就是要下载。闭环了哈哈。
sudo apt install curl
该命令可能需要输入密码,输入你刚刚设置的密码就可以了。
我靠了,还有问题!
遇到这个问题,需要先更新一下软件源:
sudo apt update
这时候再运行刚才的下载命令,应该就没问题了。
成功安装,哈哈哈!
这个时候再运行刚才的一键脚本,完成换源。
记得再命令前面加上sudo
,提升权限。
我服了,光是提权好像还不行,试着切换到root用户试一下,在此之前,先改一下root账户的密码:
sudo passwd root
输入密码还是不会显示,输入完毕回车就OK了。
然后切换到root用户下
su
看到这个#
号就说明你是root了,现在再运行那个换源脚本(我在想如果手动换可能已经换好了)。
终于好了,选择一个源回车就OK了。我这里选择阿里源。然后一路回车就OK了。最后记得切换会普通用户,root用户权限太高不安全。
su <用户名>
我真服了,自己名字打错了!草草草!
然后你可以根据自己的喜欢,美化一下终端,下几个好用的有意思的软件呀,玩玩就OK。我这展示几个。
- neofetch
sudo apt install neofetch
这里吐槽一下,
neofetch
有时候动画比较卡,我这里更推荐的是fastfetch
具体安装步骤你们就自行百度吧。我记得不是直接apt install
那么简单。
- lolcat
这个就是把终端输出渲染成rainbow色。没啥用,纯玩。
sudo apt install lolcat
如何使用呢?在命令后面加上| lolcat
就可以了。比如说:
- sl
小火车,纯玩具,哈哈。
sudo apt install sl
输入sl
屏幕会有小火车开过来,配合lolcat
效果炸裂。
后续如果个人需要,可以尝试去美化一下终端,我这推荐
zsh
。教学网上一大把,我就不赘述了。
03、docker安装指南
安装完wsl之后,接下来就可以安装docker了。原来wsl1安装docker会非常麻烦,但是wsl2更新了之后就非常方便了。
还是一行命令就完事了。并非一行。
su
先切换到root用户
然后执行
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
还是使用阿里源,回车确认就完事了。然后选择docker的Registry的镜像源,就按它推荐的吧。我个人都是长期挂梯,基本没有用过啥镜像源。
然后一路回车,就完成了。
然后你输入docker ps
发行报错!是不是很难绷,哈哈哈。
但是你在docker命令前面加个sudo
也可以运行,如果不嫌弃麻烦,就这样用也可以。下面我教你如何不用加sudo
也一样运行。
设置docker不用sudo命令
- 创建名为docker的用户组。如果之前有这个组就好报错,忽略即可。
sudo groupadd docker
- 将当前用户加入组dokcer:
sudo gpasswd -a ${USER} docker
- 重启docker服务,(生成环境慎用)
sudo systemctl restart docker
- 添加访问和执行权限:
sudo chmod a+rw /var/run/docker.sock
- 操作完毕,验证一下。
非常完美!至此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,那么就完成了。
就像这个一样。快去试试吧。