1 概念
Windows Subsystem for Linux(简称WSL),Windows下的Linux子系统,是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。
如果使用Windows 10 2004以上,可以通过WSL 2来窗口化运行桌面应用,也不需要另外安装其他的服务器。
微软官方文档:适用于 Linux 的 Windows 子系统文档 | Microsoft Learn
2 安装方法
2.1 环境安装要求
wsl1必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。
若要更新到 WSL 2,需要运行 Windows 10。
- 对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
- 对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。
查看方法:
在键盘上按下win+R调出运行窗口,随后输入“winver”命令并回车。
也可用点击桌面此电脑-->属性
2.2 环境初始化
2.2.1开启系统虚拟化功能的支持
开启内核支持
点击开始-->设置-->应用-->程序和功能-->启动和关闭windows功能-->Hyper-V-->适用于Linux的windows子系统-->虚拟机平台
保证开启以下功能:
Hyper-V:由微软开发的虚拟化技术,它可以在 Windows 操作系统上创建和管理虚拟机
适用于Linux的windows子系统:是 Windows 上的一个功能,它允许用户在 Windows 操作系统中运行 Linux 发行版。WSL 通过提供一个 Linux 兼容的内核接口层,将 Linux 应用程序集成到 Windows 系统中,使得用户可以在 Windows 环境中轻松运行和开发 Linux 应用程序。
虚拟机平台:是 Windows 操作系统的一个功能,用于启用和管理 Hyper-V。通过 Hyper-V,用户可以在单个物理主机上运行多个虚拟计算机,每个虚拟计算机都具有独立的操作系统和应用程序。这对于开发、测试、运行不同操作系统或应用程序的环境隔离以及服务器虚拟化等场景都非常有用。
或者使用Powershell开启
通过powershell开启linux子系统支持:
在搜索框搜索powershell
执行以下命令:必须已管理员身份运行,否则会报权限740问题
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
通过powershell开启虚拟机平台:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
建议修改完内核参数后重启电脑
2.3 升级Linux内核包
参考链接:旧版 WSL 的手动安装步骤 | Microsoft Learn
打开网页后按照给出的路径点击箭头下载安装包,并且安装完成
安装包
2.4 WSL版本更新
登录powershell执行以下命令:
PS C:\Windows\system32> wsl --version
如果输出命令行选项无效: --version,说明版本太低,需要更新升级
#更新版本
PS C:\Windows\system32> wsl --update
正在安装: 适用于 Linux 的 Windows 子系统
已安装 适用于 Linux 的 Windows 子系统。
#查看版本
PS C:\Windows\system32> wsl --version
WSL 版本: 2.0.9.0
内核版本: 5.15.133.1-1
WSLg 版本: 1.0.59
MSRDC 版本: 1.2.4677
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.19045.3803
2.5 安装Ubuntu子系统
2.5.1 手动安装
在Microsoft Store搜索Ubuntu,选择后点击获取并自动安装
2.5.2 自动安装
打开Powershell执行以下命令:
PS C:\Windows\system32> wsl --install
安装过程中会要求输入普通用户名和密码
登录成功后,修改root密码
sudo passwd root
-输入密码回车
-输入密码回车完成
2.6 修改WSL版本
登录powershell执行
查看目前版本
wsl -l -v或者wsl --list --verbose
修改版本:
#将wsl从1版本修改为2
wsl --set-version Ubuntu 2
2.7 关闭和开启wsl
退出wsl和登录wsl
PS C:\Windows\system32> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
PS C:\Windows\system32> wsl --shutdown
PS C:\Windows\system32> wsl -d Ubuntu
3 WSL安装docker
通过powershell登录wsl的ubuntu系统
3.1 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
3.2 设置仓库
#更新apt包索引
sudo apt-get update
#安装依赖包
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
#添加 Docker 的官方 GPG 密钥
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#设置apt稳定版仓库
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"
3.3 安装docker社区版
#更新apt索引
sudo apt-get update
#安装docker:默认安装最新版docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
3.4 启动docker
sudo systemctl start docker
如果以上命令报错:
System has not been booted with systemd as init system (PID 1). Can‘t operate
如果systemd命令执行失败:
1)需要确认wsl的主进程(pid=1)是否为systemd,如果是init进程,需要按照以下步骤进行配置;
2)需要登录wsl查看wsl的配置是否开启,如果没有开启的话按照以下内容修改:
3)修改配置后,重启wsl
#查看目前wsl状态
PS C:\Windows\system32> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
#关闭wsl
PS C:\Windows\system32> wsl --shutdown
#查看状态
PS C:\Windows\system32> wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
4)重新进入wsl查看主进程是否为systemd
启动docker
可以执行docker命令
3.5 配置阿里云加速
参考文档:基于wsl2模板 安装Ubuntu子系统和docker_wl2安装-CSDN博客
#开启ssh服务
sudo ssh-keygen -A
sudo apt-get install ssh
sudo systemctl start ssh
#编辑docker配置
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
#重启docker
systemctl daemon-reload
systemctl restart docker && systemctl status docker
部署测试服务:
docker run -dit --name app1 -p 30080:80 nginx:1.22.1