WSL与Docker WSL非常像windows版的Docker,可以启动“容器”(特意直接加引号,下面有解释),在容器世界里面,可以执行各种Linux操作。下面这样,是不是和Docker很像? ps:上面提到的“容器”,实际上是安全的(即:虚机),WSL2内部架构如下: 虽然 WSL Docker 很像,但它对 WSL 镜像有应用,就是得从 MS 的商店下载: 这个就有点显不那么显眼了,其实你这里可能已经变成了很多现在的Docker容器,又得重新安装方便了。 我是 Windows 用 SL,我的 Linux 开发机用 Docker,那我怎么在里面跑 Docker 呢? WSL运行Docker容器常见的WSL里面运行Docker,就是这样子的: 就是把WSL当做一个新的开发机,然后在WSL里面,安装Docker软件。 这样子,也能解决问题。就是解决了一点点。那不能WSL直接运行Docker镜像呢? 答案是可以的: 方法下,是类似这个样子的: 具体操作如下: 在Docker里面,将包含导出来
//查看正在运行的容器docker ps//根据容器ID,导出镜像包docker export $ContainerID > ./tsjsdbd.tar
然后再WSL里面,将Docker镜像导入:
wsl --import <DistributionName> <InstallLocation> <FileName>
示例 例如,我这里用Docker运行了一个busybox容器:
docker run -it busybox /bin/sh
然后查询容器ID:
docker psCONTAINER ID IMAGEc1e9e8f77336 busybox
出处:
docker export c1e9e8f77336 > tsjsdbd_busybox.tar
然后我把这个镜像文件,到我的windows电脑上。 并在wsl里面导入:
wsl --import tsjsdbd_busybox ./busybox ./tsjsdbd_busybox.tar
导入后查看:
wsl -l
然后,我启动这个busybox镜像。
wsl -d tsjsdbd_busybox
OK,我已经在WSL容器里面了,这是一个busybox的Docker容器镜像。 Docker运行WSL镜像从上面的操作可以看到,WSL和Docker的镜像是相通的。所以WSL系统,也可以导出给Docker直接运行。类似这个样子: 具体操作如下: 先查看下当前跑了哪些wsl容器: wsl -l -v NAME STATE VERSION * Ubuntu-18.04 Stopped 2 tsjsdbd_busybox Running 2 没有指定的新闻镜像 wsl --export tsjsdbd_busybox ./mybox.tar “ tsjsdbd_busybox ”就是你给Docker运行的WSL容器(里面可能安装一些你需要的软件。导出的tar包,就可以看做是WSL镜像了(可以直接导入给Docker) 最后,在Docker里面,导入这个镜像: docker import - mybox < mybox.tar 可以查询此镜像 docker images |grep mybox 并启动
docker run -it mybox /bin/sh WSL与Docker镜像大体上,我给一个: 所以WSL挺挺的。 WSL启动GUI界面整体方案是利用 X11 Server,原理参考: 《Docker运行带UI界面的应用,并将它的界面投射到你的Windows电脑》 https://bbs.huaweicloud.com/blogs/281862 X11 Server,一般推荐VcXsrv,我自己用下来,觉得MobaXterm更傻瓜一些。所以我网上都用MobaXterm的。 附:安装WSL1.系统要求Windows 10,版本 2004 以上。 译例如我是20H2,是OK的。 点击:开始-设置-关于,查询自己的版本 2. 判断wsl2是否已有
wsl -l -o如好吧,比较换个高级步骤了(说明你的windowss)。 步骤不行,则手动执行 3. 允许开发者模式4.启动WSL2功能 启用 WSL2 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 启用虚拟机平台 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 启用 Hyper-V dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart 设置 WSL2 为默认 wsl --set-default-version 2 5.重启,安装wsl wsl_update_x64.msi 执行以上刑包。 下载地址: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi 附:高阶版GPU,GUI界面Windows高版本的(win10 21H2),可以在WSL2里面跑CUDA https://docs.microsoft.com/en-us/windows/ai/directml/gpu-cuda-in-wsl 再高一点(win11),可以支持带GUI界面的Linux程序。 https://docs.microsoft.com/en-us/windows/wsl/tutorials/gui-apps
|