一文搞懂WSL2安装及docker详解

点击上方蓝色字体,关注我们


前言

        由于平时开发是在Windows下启动一个VMWare虚拟机使用Linux系统辅助开发及测试,但VMWare虚拟机占用大量磁盘内存资源,操作和维护也非常繁琐。windows10推出了WSL2,以上问题得到了完美的解决。

        WSL2相比WSL1来说使用linux内核可以真正完美支持Docker。与WSL1的模拟Linux API不同的是,WSL2采用在Hyper-V虚拟机中运行的方案。经过不断的优化,这个虚拟机实现了与 windows 的高度集成,实现了虚拟机的高性能运行,WSL2 便是运行在虚拟机上的一个完整的 linux 内核。因此WSL2给了在windows更接近原生linux的体验,同时wsl2 的开启速度有了非常明显的提升,几乎无需等待。

WSL2安装步骤(docker基础配置)

1 更新 Win10 到2004版本

使用Windows Update自动更新到20H2版本号。如果没有检测到更新,可以去微软官网下载“易升”工具并安装运行。工具会检测到更新并安装。

2 启用Linux子系统

打开 控制面板 -> 程序 -> 启用或关闭Windows功能。找到“适用于Linux的Windows子系统”和“虚拟机平台”,勾选这两项之后确定,并重新启动计算机。

也可以通过在管理员权限下powershell 中执行:
1 启用"虚拟机平台"
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2 启用"适用于 Linux 的 Windows 子系统"
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

下载 wsl2 需要使用的 linux 内核

在 https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel 页面点击下载 linux 内核更新包,下载完点击安装

4 设置系统WSL默认版本

使用管理员用户打开CMD,设置wsl默认版本为2:

wsl --set-default-version 2

5 安装Ubuntu发行版

打开Microsoft Store,搜索ubuntu,界面如下所示:

根据自己的需要,此处选择Ubuntu-20.04LTS版本并安装。完成之后在开始菜单会出现Ubuntu菜单项。打开它,Ubuntu将会进行初始化操作。等待几分钟后按照提示,为Ubuntu设置用户名和密码。最后,我们需要验证Ubuntu是否在WSL2的环境下启动。以管理员用户打开powershell,执行:

wsl -l -v

如果看到如下信息:

  NAME            STATE           VERSION
* Ubuntu-20.04 Running 2

说明Ubuntu在WSL2环境下运行。到此为止安装完毕。

说明Ubuntu运行在WSL1下。需要手工切换。首先关闭WSL下运行的Linux,执行:

wsl --shutdown

然后执行:

wsl --set-version Ubuntu-20.04 2

其中Linux发行版名称为前面安装的Linux名称,可以通过wsl -l -v
命令查看。执行命令后等待片刻。等命令行提示转换完成,我们已经成功将Linux切换到WSL2环境。

另外,也可以使用 Windows Terminal 来操作 Ubuntu-20.04,在 Windows Terminal 中选择 Ubuntu20.04就可以跳转到 Ubuntu 终端中,使用上面我们配置的用户名和密码登录即可。



安装Docker方式:

1 原生linux安装Docker

首先进入Ubuntu shell,更换Ubuntu-20.04官方源为国内源,加快下载速度。执行。

vim /etc/apt/sources.list

将内容替换为下方(注意版本代号focal):

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal universe
deb http://mirrors.aliyun.com/ubuntu/ focal-updates universe
deb http://mirrors.aliyun.com/ubuntu/ focal multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-security universe
deb http://mirrors.aliyun.com/ubuntu/ focal-security multiverse

执行更新:

apt update && apt upgrade -y

wsl2已经完整使用了linux内核此种方式与之前在vmware虚拟机安装docker类似依次执行如下命令:

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

执行脚本安装过程中,脚本提示“建议使用Docker Desktop for windows”,20s内按Ctrl+C会退出安装,所以需要等待20s,此种方式需要访问网络

最后一个步骤,启动Docker daemon。但是此处有一个问题,WSL2经过测试无法使用systemctl命令(此问题已经解决),因此我们使用service命令启动Docker daemon进程。命令如下所示:

sudo service docker start
* Starting Docker: docker

至此,Docker 在WSL2下安装完毕。

注:WSL2 Docker最爽的地方是和宿主机Win10共享network(注意宿主机重启后IP地址会变化存在问题,待后续补充解决方法

宿主机Win10使用localhost加端口号就可以访问WSL2中Docker对应container中的服务,十分方便。

查看Docker版本:

Docker Desktop for windows方式

Docker 也专门开发了可以使用 WSL2
 中的 Docker
 守护进程的桌面管理程序, 打开 Docker Desktop WSL2 backend 页面,下载最新的 Docker Desktop for Windows 程序 ,建议下载stable版本

下载地址:https://www.docker.com/products/docker-desktop

启动Docker Desktop for Windows,点击“设置”按钮,启用基于WSL2
的引擎复选框(Use the WSL 2 based engine)

在 Resources 的WSL Integration中设置 WSL2 发行版中访问 Docker,如下图使用的是 kali-linux。

重启 Docker desktop for Windows完成后就可以在 WSL2里面使用 docker 命令

在WSL2里面执行df -h
,会发现增加了一些新的与docker有关的挂载点

总结

WSL2下原生linux安装docker方式和完全linux虚拟机安装docker类似,区别在于WSL2下的linux不支持systemd。

Docker Desktop for windows方式,实质是利用docker的C/S架构,将windows模式下的docker对应docker.sock,docker客户端二进制和docker的数据目录挂载到WSL2 Ubuntu-20.04,在此Ubuntu-20.04下执行docker命令实质为客户端通过 挂载的/var/run/docker.sock文件与windows里面的dockerd服务端进程通信。我们在Ubuntu-20.04下重新启动Ubuntu-20.04下dockerd进程,/var/run/docker.sock的时间戳也被更新,此时客户端通过/var/run/docker.sock文件与linux下的dockerd服务端通信。



关闭虚拟机

WSL2实际上是在虚拟机中运行。我们一旦进入WSL2 Linux的命令行,虚拟机会自动启动运行。如果我们查看任务管理器,会发现一个Vmmem进程。如下所示:

该进程是虚拟机的进程。它比较占内存。不使用WSL2的时候我们可以关闭它以节省内存。关闭WSL2 Linux的方法如下。使用管理员打开CMD,运行:

wsl --shutdown

卸载发行版

有时候某个Linux发行版不再使用,或者是环境被搞坏需要重装,这时候我们可以卸载掉这个Linux发行版。方法如下。
首先使用命令查看系统内安装的Linux发行版

wslconfig /l


Windows Subsystem for Linux Distributions:
Ubuntu-20.04(Default)

然后使用如下命令卸载:

wslconfig /u Ubuntu-20.04

Win10与wsl2子系统互相访问

Win10访问wsl2系统比vm虚拟机是亮点,特别方便,进入CMD或者PowerShell,输入:

cd \\wsl$\Ubuntu-20.04\

  可以进入Ubuntu-20.04子系统根目录,如下图所示:

  

或者打开文件资源管理器,在地址栏输入\\wsl$\Ubuntu-20.04\
,也可以Ubuntu-20.04子系统根目录  


Linux子系统访问Win10文件

进入Linux子系统运行df -h
,看到如下:

WSL2默认C盘迁移问题,WSL2 IP地址的问题待续.

点个

在看

你最好看

文章转载自金融大数据分析应用,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论