装置 WSL
1. 开启WSL
必须启用“实用于 Linux 的 Windows 子系统”可选性能并重启,而后能力在 Windows 上运行 Linux 发行版。
以管理员运行Powershell(开启WSL,如已开启可跳过)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform --启用“虚拟机平台”可选组件
2. 装置WSL Linux发行版本
比拟 WSL 1 和 WSL 2
WSL 1 和 WSL 2 之间的次要区别在于,在托管 VM 内应用理论的 Linux 内核、反对残缺的零碎调用兼容性以及跨 Linux 和 Windows 操作系统的性能。
WSL2相比WSL1来说能够完满反对Docker。与WSL1的模仿Linux API不同的是,WSL2采纳在Hyper-V虚拟机中运行的计划。能够说WSL2和原汁原味的Linux曾经非常靠近
- WSL1 没有 Linux 内核,不反对 docker;WSL2 是有 Linux 内核的轻量化虚拟机,反对 docker。
- 目前 docker 曾经针对 WSL2 做了适配,装置时检测到 WSL2 就会启用 WSL2 后端,不仅能同时在 Windows 和 WSL 下操作 docker 服务器,还比以前的 docker on Windows 启动更快、占用资源更少。
WSL1
不反对Docker的守护过程,但您能够应用Docker CLI连贯到通过Docker for Windows或您创立的任何其余VM 运行的近程Docker守护过程
不能齐全兼容systemctl, systemd等等,IO速度绝对原生Linux也是大打折扣,在编译和解压方面能够很深领会到。毕竟不是真正的Linux,而是挂在Windows NT内核之上的仿Linux 零碎
WSL1与Docker 集成
因为WSL 还不是原生的Linux,所以须要借助Docker for Windows来实现Docker(Docker for Windows 是基于Hyper-V 技术)
另外一种形式是,在WSL1中装置docker 客户端,连贯 docker server, 来解决在WSL1上应用docker 的问题。(PS: Win10 的Linux 子系统是装不了 docker (服务端)的,然而能够装置客户端)
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo apt remove gpg
sudo apt install gnupg1
sudo apt install software-properties-common
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce
echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc
参考
- Running Docker containers on Bash on Windows来自 <https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/>
Setting Up Docker for Windows and WSL to Work Flawlessly来自 <https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly>
WSL2
WSL2 是第二代 WSL,蕴含在2020年5月正式公布 Windows 10 v2004 版中。相比第一代,新的 WSL2 从新设计了架构,应用真正的 Linux 内核,简直具备 Linux 的所有残缺性能。启用WSL2的 Linux 系统启动工夫十分快,内存占用很少,并且,WSL 2 还能够间接原生运行 Docker,VS Code 编辑器还有 Remote-WSL 插件,绝对于残缺的 linux 虚拟机只是不反对 systemctl、systemd,不能间接运行图形桌面。Windows 也越来越向虚构平台聚拢,Windows NT 内核和 Linux 内核都是运行在虚构平台之上的,是平级的
We will replace the Hyper-V VM we currently use by a WSL 2 integration package. This package will provide the same features as the current Docker Desktop VM: Kubernetes 1-click setup, automatic updates, transparent HTTP proxy configuration, access to the daemon from Windows, transparent bind mounts of Windows files, and more.
降级到WSL2
如果发现VERSION为1,阐明Ubuntu运行在WSL1下,能够降级到 WSL2。同样,WSL2也能够降级到WSL1。
wsl -l -v #查看已装置Linux版本和名称,残缺命令格局:wsl --list --verbose
WSL2须要Windows build 18917 更新, WSL不须要. 然而最好首先将操作系统更新到须要的版本, 而不是先装置WSL再更新
WSL 2 须要更新其内核组件。无关信息,请拜访
https://aka.ms/wsl2kernel
具体步骤参考 : https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
装置 WSL 2 之前,必须启用“虚拟机平台”可选性能
wsl --set-version Ubuntu 2 #降级到WSL2,其中 Ubuntu 是曾经装置的Linux名称,命令格局:wsl --set-version <Distro> <Version>
启用WSL后,通过 \wsl$ 能够拜访WSL文件
WSL2 与docker 集成
最后的WSL是在Windows之上模仿Linux内核,然而Windows和Linux之间存在如此根本的差别,以至于某些事件不可能以与本机Linux雷同的行为实现,这意味着不可能间接在 WSL中运行Docker Engine和Kubernetes
在WSL1中,Docker Desktop通过Hyper-V虚拟机去运行docker环境的
降级到WSL2 之后, Docker Desktop 能够间接用 WSL2,间接运行在Linux 内核上了
通过如下设置,Docker Desktop就和WSL2散发版本进行了集成,无需在WSL中装置docker; 当然,也能够抉择不与Docker Desktop集成,间接在WSL 中运行docker 容器。
启用WSL后,docker运行数据都在WSL发行版中,文件地位都只能由WSL治理
装置docker后,docker会主动创立2个发行版:
- docker-desktop
- docker-desktop-data
WSL发行版默认都是装置在C盘,在%LOCALAPPDATA%/Docker/wsl目录
docker的运行数据、镜像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中
通过 WSL 2 集成,您依然能够体验到与 Windows 的无缝集成,但在 WSL 中运行的 Linux 程序也能够执行雷同的操作。这对于从事面向 Linux 环境的我的项目或为 Linux 量身定制的构建过程的开发人员产生了微小影响。不再须要保护 Linux 和 Windows 构建脚本!例如,Docker 的开发人员当初能够在 Windows 上的 Linux Docker 守护程序上工作,应用与 Linux 计算机上的开发人员雷同的工具和脚本集:
注:WSL2 Docker最爽的中央是和宿主机Win10共享network,咱们在宿主机Win10应用localhost加端口号就能够拜访Docker中对应container中的服务,非常不便
WSL应用
wsl #启动
wsl --shutdown #敞开所有正在运行的 Linux 和 WSL 2
启动 WSL2 之后,会在工作管理器中发现多了一个 虚拟机工作线程
拜访wsl 文件
卸载发行版
有时候某个Linux发行版不再应用,或者是环境被搞坏须要重装,这时候咱们能够卸载掉这个Linux发行版。办法如下。
- 首先应用:wslconfig /l 命令查看零碎内装置的Linux发行版。
- 而后应用:wslconfig /u <发行版名称>卸载掉指定的发行版Linux。