WSL2和Docker for Windows

文章目录

  • 一、Docker和WSL2概述
  • 二、WSL安装使用
  • 三、基于Docker导入任意WSL分发
  • 参考资料

一、Docker和WSL2概述

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。一个完整的Docker有以下几个部分组成:

  • DockerClient客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • DockerContainer容器

在windows下配合VS code的Remote - Containers插件,使用体验很不错,缺点就是不像WSL2一样可以在资源管理器中直接处理文件。

但是,Docker本身是基于Linux的。为了让windows用户能够体验docker的便利,docker for windows应运而生。而它则是基于windows subsystem for linux(WSL)的。启动docker可以发现WSL多了docker-desktopdocker-desktop-data两个wsl分发版。而docker就在此基础上运行。(当然最初的docker for windows后端并不是直接使用WSL)。

Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。如果使用Windows 10 2004以上,可以通过WSL 2来窗口化运行桌面应用,也不需要另外安装其他的X 服务器。

二、WSL安装使用

详细内容参加微软官方文档。用户可以安装微软提供的现成的分发版。可以更改分发版的安装位置,分发版的启动用户等。核心命令是wsl。建议有条件的电脑使用WSL2。
配合VS code的Remote - WSL插件使用很香。

三、基于Docker导入任意WSL分发

微软提供的分发版十分有限,例如就没有CentOS,虽然它已经被Red Hat所放弃,奈何众多服务器仍然使用CentOS。用户可以自定义打包分发版,在github上有许多开源的分发版,例如wsldl-pg/CentWSL。不过微软提供了一个基于Docker容器的方式,详细内容参加官方文档,但值得一提的是,官方文档中使用下述命令导出docker容器,本人实测在wsl导入时会报错“未指定的错误”。

docker export <容器名|容器ID> > <目标tar文件>     # 报错未指定的错误
docker export -o <目标tar文件> <容器名|容器ID>    # 正常被WSL导入

观察两种导出方式发现文件大小并不一致,这或许就是差别所在。

参考资料

  • 微软官方文档
  • 百度百科介绍
  • Docker官方
  • CSDN

你可能感兴趣的:(windows,docker,linux)