在 Windows 中通过 WSL 2 高效使用 Docker

大家好,我是比特桃。平时开发中,不免会使用一些容器来跑中间件。而开发者使用的操作系统,大多是Mac OS 、Windows。Docker 为了兼顾这两个平台的用户,推出了 Docker Desktop 应用。Docker Desktop 中的内核还是采用了 Linux 的内核进行的,这并没有发生变化,它会依托于操作系统中的 Linux 虚拟内核开展。安装配置成功后,其 Docker 使用也和 Linux 下几乎一模一样(路径转义符略有区别)。Mac OS 的版本直接进行拖拽安装即可,比较便捷。但 Windows 中需要手动配置Windows中自带的 Linux 子系统,本文特此记录说明。
其实写这篇文章的主要原因是:我发现有不少人在 Windows 下通过安装Linux虚拟机来使用Docker,这个效率非常低,不太推荐。因为 Windows 为我们提供了和原生系统结合的更完美的 WSL,然后再通过 Docker Desktop 应用的结合,可以达到更好的效果。

1. 环境准备

打开 Windows 中的虚拟机环境,有两种方式。分别是界面版、命令版,你可以任选一种进行:

1.1 界面配置

打开控制面板→程序和功能

启用或关闭 Windows 功能

在这里插入图片描述
开启 适用于Linux 的 Windows 子系统、虚拟机平台(如有 Hyper-V 选项也可以一并启用)
在这里插入图片描述

1.2 命令配置

命令版(与上面UI操作意思相同)

# 启用 Windows 子系统 Linux 版
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2. WSL配置

WSL 是微软在Windows操作系统中,提供给开发人员在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。Windows Subsystem for Linux (WSL) 允许开发人员安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等)并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,无需修改,无需任何修改。传统虚拟机或双引导设置的开销。

2.1 配置WSL

# 设置 WSL 默认版本为 2
wsl --set-default-version 2

在这里插入图片描述

2.2 升级WSL

# 升级并检查相关缺少内容
wsl --update

通过wsl --update 命令,WSL 将进行升级并检查相关缺少内容
在这里插入图片描述
如果无法连接外网,离线手动安装WSL核心包:https://learn.microsoft.com/en-us/windows/wsl/install-manual

2.3 安装子系统

# 列出 Linux 分发版本,并进行安装
wsl --list --online
wsl --install

在这里插入图片描述
只安装配置内核包即可使用 Docker Desktop,但如果条件允许的情况下,最好还是装一个完整的 Linux 分发版本的子系统

安装分发系统也可通过 Microsoft Store 搜索下载安装:
在这里插入图片描述

2.4 使用子系统

安装好后通过适用于Linux的Windows子系统 或者 Ubuntu ***应用即可使用 Linux 子系统:
在这里插入图片描述
可以看到,使用方面是和Linux 终端并没有区别。即便我们不用 Docker ,在其他需要使用 Linux 的场景下,都可以进行使用 WSL:
在这里插入图片描述

3. 安装Docker

一切准备齐全,官网下载安装包:https://www.docker.com/products/docker-desktop/
下载安装可无脑下一步,就不介绍了。打开后主要配置一下这里将我们上面配置好的 WSL 与 Docker相结合:
在这里插入图片描述
大功告成!我们可以看到,在Windows终端中,可以完美使用 Docker 的命令:
在这里插入图片描述
在我们的 WSL 中的 Ubuntu 20.0.4 中,也可以直接使用 Docker ,他们紧密的结合在了一起。
在这里插入图片描述

4. 结语

本文通过微软为我们提供更高效的 WSL ,安装 Windows下的子系统。从而实现了 Docker 所依赖的 Linux 内核的需要,通过 Docker Desktop 软件,配置集成了我们 WSL 中的 Linux 子系统。在 Windows 中一体化的使用,也节省了大量的使用虚拟机所产生的计算资源。
我已经很少用 VirtualBox 之类的虚拟机软件了,因为有 WSL 足以,祝大家使用顺利。