本文分享自华为云社区《WSL2与Docker容器,无缝互相迁移》,作者: tsjsdbd 。

注:本文提到的WSL都是指WSL2

WSL与Docker

WSL非常像windows版的Docker,可以直接启动“容器”(故意加引号,下面有解释),并且在容器世界里面,可以执行各种Linux操作。像下面这样,是不是和Docker很像?

ps:上面提到的“容器”,实际是安全容器(即:虚机),WSL2内部架构如下:

虽WSL和Docker很像,但是它对WSL镜像有要求,就是得从 MS的应用商店下载:

这个就稍显不那么方便,毕竟你可能已经有很多现成的Docker容器了,这里又得重新安装一遍。

我是Windows上有WSL,我的Linux开发机上有Docker,那我怎么在WSL里面跑Docker呢?

WSL运行Docker容器

常见的WSL里面运行Docker,是这样子的:

就是把WSL当做一台新的开发机,然后在WSL里面,安装Docker软件。

这样子,也能解决问题。就是稍微麻烦了一点点。那能不能WSL直接运行Docker镜像呢?

答案是可以的:

参考:https://docs.microsoft.com/en-us/windows/wsl/use-custom-distro

这种方法下,是类似这个样子的:

具体操作如下:

  1. 在Docker里面,将容器导出来
//查看正在运行的容器docker ps//根据容器ID,导出镜像包docker export $ContainerID > ./tsjsdbd.tar
  1. 然后再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 -vNAME               STATE           VERSION* Ubuntu-18.04       Stopped         2tsjsdbd_busybox    Running         2

导出指定的wsl镜像

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电脑》

Docker运行带UI界面的应用,并将它的界面投射到你的Windows电脑-云社区-华为云

X11 Server,一般网上推荐 VcXsrv,我自己用下来,感觉 MobaXterm 更傻瓜一些。所以我都用 MobaXterm 的。

附:安装WSL

1.  系统要求

Windows 10,版本 2004 以上。

比如我的是 20H2,是OK的。

点击:开始-设置-关于,查询自己的版本

2.  判断wsl2是否已有

打开 power shell,输入

wsl -l -o

如OK,则不用后续步骤了(说明你的windows版本已经比较高)。

不行,则手动执行后续步骤

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

点击关注,第一时间了解华为云新鲜技术~​

手绘流程图,教你WSL2与Docker容器无缝互相迁移相关推荐

  1. docker文件过大,Docker容器引擎,迁移/var/lib/docker/到本机其它挂载分区或远程主机的某个分区。docker迁移

    docker文件过大,Docker容器引擎,迁移/var/lib/docker/到本机其它挂载分区或远程主机的某个分区.docker迁移. 0. 迁移前检查镜像和容器 docker images 和d ...

  2. rpo流程图模板_职场精英必看!手把手教你怎么手绘流程图|华为MatePad Pro

    Nebo,业界首款支持键盘.手写笔混合输入的笔记类应用.在参加项目会议.和领导汇报工作.向甲方展示方案等日常办公场景当中,手写+打字的记录模式极大地提升了我们的生产力与创造力. NeboAPP是全球知 ...

  3. rpo流程图模板_word流程图-职场精英必看!手把手教你怎么手绘流程图|华为MatePad Pro...

    Nebo,业界首款支持键盘.手写笔混合输入的笔记类应用.在参加项目会议.和领导汇报工作.向甲方展示方案等日常办公场景当中,手写+打字的记录模式极大地提升了我们的生产力与创造力. Nebo APP是全球 ...

  4. 手绘流程图讲解spark是如何实现集群的高可用

    本文分享自华为云社区<图解spark是如何实现集群的高可用>,作者:breakDawn. 我们看下spark是怎么针对master.worker.executor的异常情况做处理的. 容错 ...

  5. K8S之Docker容器的备份和容灾方案

    数据安全在当今复杂的IT世界中变得越来越重要,甚至超越了网络安全和信息安全,因为一切企业基本上都是以业务和应用的线上商业发展之道.所以大家变得尤为重视. Docker 是一个开源的应用容器引擎,基于 ...

  6. docker容器介绍(3)

    接上篇docker容器介绍 镜像迁移 保存一台宿主机上的镜像为tar文件,然后可以导入到其他的宿主机上: save ​ 将镜像打包,与下面的load命令相对应 [root@yixuan ~]# doc ...

  7. 美团外卖uml流程图_美团外卖小哥手绘送餐流程图 追逐梦想要当产品经理

    原标题:美团外卖小哥手绘送餐流程图 追逐梦想要当产品经理 平日在网络上,外卖小哥深不见底的多边"技能"展示常常让大家拍手称赞.近日,有一位美团外卖小哥在现场徒手绘制外卖订餐流程图, ...

  8. Excalidraw - 免费的手绘风格白板应用,能够画各种流程图、示意图、架构图

    一款完全免费的手绘风格绘图在线应用,能快速画出漂亮的流程图.示意图甚至是图表. 关于 Excalidraw Excalidraw 是一款轻量的手绘风格电子白板在线应用,无论是 Windows / ma ...

  9. ioDraw - 超好用的在线白板,能够手绘各种流程图、架构图

    今天,推荐给大家的是一款超级好用的在线绘图工具,ioDraw在线白板. 关于 "ioDraw在线白板" 一款非常轻量的在线白板工具,可以直接在浏览器打开,轻松绘制具有手绘风格的图形 ...

最新文章

  1. Map接口及其常用方法
  2. 某SAP项目进销存报表优化小记
  3. DB2 runstats、reorgchk、reorg 命令【转载】
  4. springmvc二十七:springmvc-ResponseBody与ResponseEntity
  5. linux 如何运行r脚本,Linux系统下如何debug R脚本
  6. c++string转char数组_C++ 算法题解:打印沙漏、素数对猜想、数组元素循环右移问题...
  7. 光电技术加持,这款望远镜可以看见外太空
  8. python能以文本和二进制方式处理文件_使用Python进行二进制文件读写的简单方法(推荐)...
  9. 他是BAT 100万+年薪大数据专家,今天你可以免费学习他的内部课程,仅限100人...
  10. 读取文件时,文本文件的UTF-8格式带来的问题
  11. 接口接收数据_你知道RS232与RS485接口的区别吗?
  12. ansys大变形开关要不要打开_ANSYS与ABAQUS比较之实例7橡胶垫圈的受压分析
  13. 计算机操作系统的分类
  14. c语言是高级编程语言吗,C语言是高级编程语言吗?
  15. Audio Ease Indoor 混响插件评测
  16. IAR8.3.2破解说明
  17. layui官方文档保存
  18. 锂电池放空后充不进电_锂电池放置太久无法充电 血的教训!
  19. VirtualBox+Vagrant快速搭建linux虚拟环境
  20. 线性代数中满足乘法交换律的运算-行列式与迹

热门文章

  1. java开发者工具开源版_6种开源工具可帮助教育工作者保持井井有条
  2. 使用Xerte创建简单的在线学习资料的指南
  3. (16) Node.js 模块的加载逻辑
  4. JSON语法之JSON 数值
  5. ROS Rviz 显示超声波测量范围 Python
  6. 马尔科夫决策过程(MDP)
  7. C++自己实现一个String类(腾讯阿里面试题目)
  8. golang之网络开发
  9. 020 ceph作openstack的后端存储
  10. Django 组件- 中间件