WSL
简单的说就是,Linux 的 Windows 子系统让开发人员无需虚拟机就可以直接在 Windows 上运行 Linux 环境,包括大多数命令行工具、程序和应用。
- wsl运行在windows上
- wsl2和windows都运行Hypervisor上,位于同一个超级监管者下。wsl2的网络可以通过ip route查看,能看到wsl2的网络本质是windows的路由转过去的。
开启WSL支持
需要管理员权限的shell才能
管理员权限获得
在城里人trippal的idesk软件安装上提交管理员权限申请,等待半天会有专门的技术运营中心的人员联系
在本机管理员权限下打开cmd,输入
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
输入appwiz.cpl,可以看到linux子系统选项成功,上述命令本质上是勾选该选项让系统支持WSL
在应用商店安装WSL
在windows自带的应用上搜索ubuntu 选择第一个安装,该版本是Ubuntu 29,04 LTS(长期支持 (Long Term Support)) 最新的 LTS 版本是 Ubuntu 20.04,它将被支持到 2025 年 4 月。换句话说,Ubuntu 20.04 在那之前都会收到软件更新 等待安装完毕后,首次输入账户和密码,就代表WSL已经安装成功。已经可以进行连接登陆。
升级安装WSL2
在windows本地cmd输入
wsl -l -v //查看本机安装的wsl版本
通过管理员身份打开PowerShell运行
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
在提示操作完成后,重启。本质是打开虚拟机平台, 同样可以通过appwiz.cpl查看。
设置WSL 2为默认版本
0. 下载wsl2的linux内核
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
1.WSL提供了转换工具
在Powershell输入
wsl --set-verison Ubuntu 2
//其中Ubuntu的名称要根据wsl -l -v的名称来输入,网上教程是Ubuntu-20.04,如果按照教程会提示没有相应分布版本
2.将WSL2设置为默认版本
wsl --set-default-version 2
3. 输入 wsl -l -v 自测
结果会显示wsl 2版本,自此wsl 安装完成。
Docker安装
curl -fsSL https://get.docker.com -o get-docker.sh //下载docker安装脚本
sudo sh get-docker.sh //启动脚本,等待安装docker
sudo service docker start//启动docker服务
//输入 docker version自检是否安装成功
//也可以sudo docker run hello-world跑demo来验证
添加用户到docker组
该目的在让非Root用户无需使用docker
sudo usermod -aG docker 用户名
// -aG 表示将用户添加到docker组中
newgrp docker //登陆到docker用户组
//自此不在需要输入sudo来使用docker的指令。
WSL 2开机自启动docker
- wsl2中创建启动脚本
sudo vim /usr/local/sbin/start_docker.sh - 然后, 把以下内容添加到脚本中
#!/usr/bin/env bash sudo cgroupfs-mount sudo service docker start - 给脚本添加执行权限
sudo chmod +x /usr/local/sbin/start_docker.sh
sudo chmod 755 /usr/local/sbin/start_docker.sh
/bin/sh /usr/local/sbin/start_docker.sh
- 给当前用户添加权限, 使在使用 sudo命令的时候不需要输入密码
sudo vim /etc/sudoers
//在 %sudo 下面添加
你的账户名 ALL=(ALL:ALL) NOPASSWD: ALL
通过过创建任务计划, 在windows登录的时候, 启动 wsl2中的docker
-
打开任务计划 -
创建新的任务计划 -
设定基本信息 -
设定触发器 -点新建., 选择登录时, 所有用户 -
设定操作 -c "sudo /bin/sh /usr/local/sbin/start_docker.sh" -
设定条件–把只有计算机使用交流电… 这个选项给去掉 7.重启生效
关掉wsl
由于wsl是基于虚拟机的,会在后台运行一些任务,因此会占用内存。为了节约资源,可以运行如下指令关掉它:
wsl --shutdown
|