关于docker:最详尽教程完整介绍Windows-的-Linux-子系统WSL1WSL2

42次阅读

共计 3793 个字符,预计需要花费 10 分钟才能阅读完成。

装置 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。
正文完
 0