您的位置:

WSL Docker

一、WSL Docker 简介

WSL Docker 是一款基于 Windows Subsystem for Linux2(WSL2)的 Docker 解决方案,它提供了与 Docker Desktop for Windows 相近的体验,使得 Windows 下的开发者无需开启传统虚拟机就能够轻松构建和管理 Docker 容器。

WSL Docker 可以在 Windows 10、Windows Server 2019 和 Windows 11 的 WSL2 环境中运行,用户可以使用 Linux 的命令行工具或者使用 Windows 中的 GUI 界面来管理 Docker 容器。同时,WSL Docker 可以与 Visual Studio Code 集成,提供更加友好和高效的开发体验。

二、WSL Docker 安装

在安装 WSL Docker 之前,首先需要确保环境中已经安装了 WSL2、Docker Desktop for Windows 以及 Windows Terminal。

1. 安装 WSL2


# 升级到最新版本的 Windows
sudo apt-get update && sudo apt-get upgrade -y

# 安装 WSL2
sudo apt-get install -y curl gnupg2 apt-transport-https
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian buster stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo apt-get install -y docker-compose
sudo usermod -aG docker $USER

2. 安装 Docker Desktop for Windows

在官网下载 Docker Desktop for Windows 并安装,保持默认配置即可。

3. 安装 Windows Terminal

在 Microsoft Store 中搜索 Windows Terminal 并安装。

4. 安装 WSL Docker


# 安装 WSL Docker
git clone https://github.com/microsoft/wsl-docker.git
./wsl-docker.sh install

三、WSL Docker 使用

使用 WSL Docker 和使用传统 Docker 差别不大,基本操作和命令都相同。使用 WSL Docker 时,可以通过以下命令在 WSL2 中启动 Docker。


sudo service docker start

通过 docker 命令可以查看 Docker 容器的状态、创建和启动容器,使用 docker run 命令启动容器时,需要加上 --platform=linux 选项。


# 查看 Docker 容器列表
docker ps -a

# 创建并运行 Docker 容器
docker run -d --name my_container -p 80:80 nginx --platform=linux

WSL Docker 虽然能够提供一些避免使用传统虚拟机的便利,但也存在一些限制。由于 WSL2 是运行在 Windows 中的,因此无法直接访问 Windows 下的文件系统,需要借助挂载点,将 Windows 中的目录挂载到 WSL2 中。同时,WSL Docker 中的容器也不能直接访问 Windows 下的网络资源,需要借助 Windows 下的代理服务器实现网络连接。

四、WSL Docker 和 Visual Studio Code 集成

WSL Docker 还可以与 Visual Studio Code 集成,提供更加友好和高效的开发体验。

1. 安装 Remote - WSL 插件

在 VS Code 中搜索 Remote - WSL 插件,安装。

2. 在 WSL2 中打开 VS Code

在 WSL2 中运行 VS Code,可以通过以下命令打开:


# 安装代码编辑器 VS Code
sudo apt-get install -y wget curl software-properties-common apt-transport-https
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt-get update
sudo apt-get install -y code

# 在 WSL2 中打开 VS Code
code .

3. 通过 VS Code 进行开发

在 WSL2 中打开 VS Code 后,就可以像在本地开发一样使用 VS Code 进行开发了,可以通过命令行或者文件浏览器打开项目目录,进行代码编写、调试和版本控制。

五、WSL Docker 的优缺点

WSL Docker 作为一款新兴的 Docker 解决方案,其优点和缺点明显。

1. 优点

WSL Docker 无需开启传统虚拟机,可以在 Windows 中轻松构建和管理 Docker 容器,因此启动速度更快、占用资源更少。同时,WSL Docker 在 Windows 下的操作体验更加友好和自然,对于习惯了 Linux 命令行工具的开发者来说,更容易操作。

2. 缺点

WSL Docker 存在一些限制,比如无法直接访问 Windows 下的文件系统和网络资源,需要借助挂载点和代理服务器实现。同时,由于 WS2 是建立在 Windows 上的,WSL Docker 的容器的部分性能会受到限制。对于一些高性能的应用和服务来说,传统 Docker 还是更适合。

六、存在的问题

WSL Docker 在实际使用中,仍然存在一些问题和局限,主要包括:

1. 文件系统性能不高

WSL2 中的文件系统存在一些性能瓶颈,对于一些 IO 密集型应用和服务可能存在性能问题,建议使用 SSD 硬盘以提高性能。

2. 挂载点方式不灵活

WSL Docker 需要通过指定挂载点的方式,来访问 Windows 中的文件系统,但是这种方式存在一些局限性,例如无法挂载远程文件系统或者其他非 Windows 系统的分区。

3. 需要设置代理服务器

WSL Docker 的容器无法直接访问 Windows 下的网络资源,需要设置代理服务器,这对于网络访问要求严格的应用和服务来说,可能存在难题。

七、总结

WSL Docker 是一款基于 WSL2 的新型 Docker 解决方案,其能够提供更加轻量、高效和友好的开发体验,方便 Windows 下的开发者进行 Docker 开发。但是 WSL2 仍然存在一些局限性和问题,需要开发者谨慎使用。