- WSL2 提供了一个内核 Linux 真实 Windows 11非常适合运行带有高性能 Linux 容器的 Docker Desktop。
- Docker Desktop 与 WSL2 的集成使您能够使用 VS Code、Git 和 Kubernetes 开发、调试和部署应用程序。 数据库 就好像它们是Linux原生系统的一部分一样。
- 将项目存储在 WSL2 文件系统中而不是 C: 盘,可以显著提高 Docker 性能并避免 I/O 瓶颈。
- 凭借良好的安全、代理和资源管理配置,Docker Desktop 和 WSL2 为个人和企业开发构成了一个坚实的环境。
在 Windows 11 上使用 Docker 容器 这不再是系统专家的专属领域:得益于 Docker Desktop 和 WSL2,无需离开 Windows 系统,即可搭建一个功能强大、轻量级的开发环境,其体验与原生 Linux 非常接近。通过正确的配置、工具和最佳实践,您可以在同一台机器上编译、调试和部署容器化的 Linux 和 Windows 应用程序,从而最大限度地发挥硬件性能。
本指南旨在帮助您把所有事情都做到尽善尽美。安装和配置 WSL2,使用 WSL2 引擎启动 Docker Desktop,集成 VS Code,配置 Git、数据库和远程开发容器,甚至可以微调性能、安全性并解决常见问题(代理、路由缓慢等)。 存储等等)。所有内容都用西班牙西班牙语一步一步地解释,并且非常注重实用性。
关键概念:Docker 容器、WSL2 和 Docker Desktop
在你开始随意安装东西之前了解每个组件的作用至关重要。Docker 是一个平台,它允许你将应用程序及其所有依赖项(库、框架、二进制文件、配置等)打包到称为容器的轻量级单元中。这些容器基于镜像,保证应用程序在任何机器上都能正常运行,无需你费心去解决“在我的机器上运行正常”的问题。
与经典虚拟机不同容器并不启动完整的操作系统;相反,它共享宿主机内核(在本例中为 Linux),并使用命名空间和 cgroups 隔离进程。其结果是软件包更小、启动速度近乎瞬时,并且资源利用率更高,这在处理大量微服务或 CI/CD 流水线时尤为显著。
WSL2(适用于 Linux 的 Windows 子系统 2) 这是微软第二代 Linux 子系统,它增加了一个运行在轻量级虚拟机中的真正 Linux 内核。这相比 WSL1 来说是一次巨大的飞跃:磁盘和网络性能得到提升,与原生 Linux 工具的兼容性更强,而且,对我们来说最重要的是,它完全支持基于 Linux 的 Docker 容器。
适用于 Windows 的 Docker Desktop 起到粘合剂的作用。 它将所有功能整合在一起:它提供了一个用于管理容器、镜像、卷和网络的图形界面,公开了一个完全兼容 Docker 的 CLI,并且,当您启用基于 WSL2 的引擎时,它允许您使用在 WSL2 中运行的 Linux 内核在同一台机器上运行 Linux 和 Windows 容器。
前提条件和系统准备
为了使 Docker Desktop 和 WSL2 在 Windows 11 上正常运行 您需要满足一些硬件和软件要求。请务必仔细阅读这些要求,以避免在安装或启动 Docker 守护进程时出现异常错误。
在操作系统级别建议使用 Windows 11 或支持 WSL2 的较新版本 Windows 10(版本号 20262 或更高)。您可以通过按 Windows + R 并输入以下命令来查看版本: winver 并检查已安装的版本。在 Windows 11 中,简化命令 wsl --install 它可用,并且使初始设置更加容易。
在虚拟化部分确保硬件虚拟化支持(英特尔 必须在 BIOS/UEFI 中启用 VT-x 和 AMD-V。Windows 将使用“虚拟机平台”功能,这对于 WSL2 和 Docker 后端至关重要(当不使用传统的 Hyper-V 时)。如果您计划将其他后端与 Hyper-V 一起使用,则还需要专业版、企业版或同等版本。
同时,最好也查看一下 Docker Desktop 的官方要求。 (64 位 CPU、至少 4 GB 内存、管理员权限以及足够的磁盘空间用于镜像和容器)。针对 Windows Server 上的具体安装,我们提供了单独的指南,但本文将重点介绍 Windows 11 桌面环境。
在 Windows 11 上安装和配置 WSL2
在 Windows 11 上实现精细化 Docker 的第一步 确保 WSL2 正确安装和配置至关重要。如果 WSL2 设置不正确,Linux 版 Docker 后端将无法顺利运行,甚至可能无法启动。
在 Windows 11 中,快捷方法是使用 PowerShell的 作为管理员 并执行以下命令:
wsl --install
此命令可自动执行几项关键任务。启用“Windows 子系统 Linux 版”和“虚拟机平台”等可选功能,下载并安装最新的 Linux 内核,将 WSL2 设置为默认版本,并自动添加 Ubuntu 发行版(如果一切顺利,中间会重启一次)。
如果您想要其他发行版,或者您要在 Windows 10 上安装,您可以手动通过“启用或关闭 Windows 功能”或 PowerShell 启用这些功能,然后从 Microsoft Store 安装您首选的发行版(Ubuntu、Debian、Fedora 等)。之后,您可以使用以下命令强制其使用 WSL2:
wsl --set-default-version 2
首次安装发行版后从“开始”菜单打开 Linux 系统后,系统会提示您创建 Linux 用户名和密码。这些用户名和密码与您的 Windows 用户帐户无关,输入密码时屏幕上不会显示任何字符(这在终端中是正常的)。该用户将拥有 Linux 发行版的管理员权限,并能够运行命令。 comandos 同 sudo.
如果过一会儿 忘记密码了吗? 发行版您可以使用用户名登录 根 从 PowerShell 运行 wsl -u root (o wsl -d <Distro> -u root (如果不是默认密码)并更改密码 passwd <usuario>更新完成后,您退出。 exit 准备好了。
强烈建议安装后立即更新软件包。尤其是当你打算将发行版用作开发环境时。在 Ubuntu 或 Debian 系统中,直接从 Linux 终端执行以下命令:
sudo apt update && sudo apt upgrade
使用 WSL2 后端安装 Docker Desktop
WSL2 启动并运行后,您现在可以继续使用 Docker Desktop 了。其理念是使用 WSL2 引擎安装 Docker,而不是依赖 Hyper-V,这通常可以提供更好的性能、更低的资源消耗,以及与 Linux 工具更自然的集成。
下载 Docker Desktop 安装程序 从 Docker 官方网站下载 Docker,务必选择 Windows 版本。由于安装程序适用于多个平台,因此请仔细检查是否是适用于您系统的正确可执行文件,而不是 Linux 或 macOS 版本。
启动 Docker Desktop 安装程序时你会看到一个相当简单的向导。选择“使用基于 WSL 2 的引擎”(或类似选项,具体取决于版本)选项,这样 Docker 就会使用 WSL2 后端而不是 Hyper-V。你还可以创建一个桌面快捷方式以便更轻松地访问。
安装过程只需几分钟。根据机器配置的不同,这可能需要一些时间,因为需要复制二进制文件和服务并配置集成。完成后,系统会提示您重启。第二次重启后,系统会提示您重启。 引导从开始菜单或使用桌面图标打开 Docker Desktop,并接受许可条款(个人和小企业用户可免费使用)。
如果您还没有正确完成 WSL2 的安装,请先完成以下步骤。Docker 会提示您下载并安装 WSL2 内核。请点击程序提供的链接,安装内核软件包,重启后,重新打开 Docker Desktop,WSL2 后端应该就可以使用了。
使用 WSL2 验证和基本设置 Docker Desktop
Docker Desktop 启动后,现在需要进行调整并检查一切是否正常运行。从系统托盘(隐藏图标)中的 Docker 图标,右键单击并输入“设置”。
在“一般”部分确认已启用与“使用基于 WSL 2 的引擎”等效的选项。这可确保 Linux 容器运行在 WSL2 内核上,并且不会使用 Hyper-V 创建额外的虚拟机,从而节省内存和 CPU 资源。
接下来,转到“资源”>“WSL 集成”部分。在这里,您将看到可用的 WSL 发行版列表(Ubuntu、Debian 等),您可以选择要启用 Docker 集成的发行版。激活您的主要发行版(例如, Ubuntu这样您就可以直接从该发行版运行 Docker 命令。
确认 Docker CLI 是否响应打开 WSL 终端(例如 Ubuntu),然后运行:
docker --version
如果该命令返回 Docker 客户端和服务器版本环境已准备就绪。作为一项附加测试,您可以使用以下命令启动典型的“hello-world”测试镜像:
docker run hello-world
如果您在 Linux 终端中看到 Docker 欢迎消息,则表示您看到了该消息。这意味着 Docker Desktop 通过 WSL2 后端做出响应,能够从官方注册表下载镜像并成功运行它们。
性能:为什么使用 WSL2 和正确的文件路径至关重要
导致 Docker 在 Windows 上运行缓慢的最常见错误之一是…… 这是由于错误地混用了 WSL1、WSL2 和文件路径造成的。配置不当的环境会显著增加容器内的编译时间和磁盘访问量。
为了充分利用 Docker Desktop 在 Windows 11 上的性能请确保您使用的是集成 Docker 的发行版所搭载的 WSL2(而非 WSL1),并且最重要的是,请将源代码存储在 WSL 文件系统中,而不是存储在挂载的 Windows 驱动器上。 /mnt/c 或类似。
切实可行的建议很简单。在 WSL 发行版终端中,找到您目录下的项目。 /home/<usuario>, 例如 /home/miusuario/proyectos如果您想在 Windows 系统中查看这些文件,可以使用以下命令打开文件资源管理器:
explorer.exe .
这背后有着明显的业绩动机。当容器访问位于 WSL2 内部文件系统中的文件时,I/O 速度比使用路径处理流量时快得多。 C:\ 安装在下方 /mnt/c对于大型项目(Node、Python、Java 等),这两种方法之间的差异非常明显。
WSL 发行版管理和 Docker 存储
如果你打算认真使用 WSL2,您最终可能会使用多个发行版(例如,Ubuntu 用于开发,另一个用于测试等等)。您可以使用以下命令列出已安装的发行版及其 WSL 版本:
wsl -l -v
如果他们中还有人在使用 WSL1 的话您可以使用以下命令将其迁移到 WSL2:
wsl --set-version NombreDistro 2
关于 WSL 中的 Docker 存储Docker Desktop 会为其自身数据创建两个特殊的发行版: docker-desktop y docker-desktop-data这些也以网络路由的形式呈现:
- \\wsl$\docker-desktop
- \\wsl$\docker-desktop-data
如果您需要从 Windows 系统中查找这些文件夹。您可以打开您的 WSL 发行版并运行 explorer.exe . 然后导航至 \\wsl\<Distro>\mnt\wsl (替换)通过实际名称(例如 Ubuntu-24.04)来查看数据所在的位置。
了解图像和卷的存储位置非常重要。因为它们会占用磁盘空间,而且如果您大量使用 WSL2,虚拟机文件的大小可能会显著增长。因此,定期检查不再需要的镜像和容器始终是一个好习惯。
与 VS Code 集成:容器化开发和调试
Docker 和 WSL2 最强大的组合之一 它指的是使用 Visual Studio Code 作为主要开发环境。VS Code 直接支持在 WSL 和开发容器中进行远程工作,因此您可以在隔离的 Linux 环境中进行编辑、编译和调试,而无需离开 Windows 系统。
要设置此工作流程在 Windows 系统上安装 VS Code,然后添加三个关键扩展:
- 远程 – WSL允许您直接在 VS Code 中打开位于 WSL 发行版中的文件夹。
- 开发容器(原远程容器)允许您在由以下方式定义的开发容器内打开项目文件夹:
Dockerfileydevcontainer.json. - Docker:在 VS Code 中添加面板和命令来管理图像、容器、卷和日志。
典型的流程图如下所示首先,在 WSL 终端中,使用以下命令克隆项目仓库(例如,一个示例 Django 项目):
git clone https://github.com/<usuario>/helloworld-django.git
然后进入项目文件夹 同 cd helloworld-django 然后打开 VS Code,并指向该路由:
code .
如果 WSL 扩展程序已激活,您将在底部栏中看到它。 绿色指示灯表明您连接的是 Linux 发行版,而不是 Windows 会话。此时,您可以使用命令面板(Ctrl + Shift + P)运行“Dev Containers: Reopen in Container”(如果您已在 WSL 文件夹中),或者运行“Dev Containers: Open Folder in Container…”(即使通过资源管理器)来选择其他文件夹。 \\wsl$).
选择默认容器配置时 (例如,对于 Django 项目,选择“Python 3”),VS Code 将生成该文件夹 .devcontainer 用 Dockerfile 和 devcontainer.jsonVS Code 将启动一个开发容器,如有必要,将重新构建镜像,并打开一个连接到该容器的新窗口。
容器内部集成了 VS Code 终端 它会显示你使用的是 Linux 系统(你可以用以下命令检查): unamePython 版本将由容器镜像决定,而不是由 WSL 发行版中安装的版本决定。这样,您可以为每个项目创建可重复且隔离的开发环境。
要在 VS Code 中调试应用程序转到“运行和调试”选项卡,选择相应的配置(例如,“Django”),VS Code 将创建一个 launch.json 使用启动参数。按下 F5 将在容器内启动开发服务器,然后您可以在浏览器中打开您的应用程序(例如,在浏览器中打开)。 http://127.0.0.1:8000/).
Windows 11 中 Docker 的基本用法
Docker Desktop 启动并运行后无论是在 PowerShell 还是 WSL 中,您都可以使用标准的 Docker 命令来管理镜像和容器。这将使您能够超越基本的测试,部署实际的服务。
开头最常用的命令 它们通常是:
docker显示可用命令列表。docker <comando> --help:对每条命令进行简要说明。docker image ls --all:系统中存储的所有图像列表。docker container ls --allodocker ps -a显示所有容器,无论正在运行还是已停止。docker info:有关 Docker 安装的全局信息(后端、内存、容器数量等)。
从 Docker Desktop 图形界面 您还可以在 Docker Hub 上搜索镜像,使用“pull”命令下载它们,启动新的容器,检查 CPU/RAM 使用情况,或进行其他检查。 日志如果你还不完全熟悉命令行,这是一种方便的入门方式。
值得注意的是,并非所有图片都同样可靠或安全。Docker Desktop 包含对某些镜像的漏洞扫描,但一般来说,最好是依赖官方或维护良好的镜像,检查标签,并避免使用包含过时组件的过时镜像。
WSL2 和容器开发最佳实践
为了营造稳定舒适的开发环境 El Temppo仅仅“启动”是不够的,建议在 WSL2 和 Docker Desktop 中遵循一系列良好实践。
在 WSL2 中,请保持内核和发行版更新。 运用 wsl --update 通过 Windows 和各发行版内的软件包管理器(apt、dnf 等)。日常工作使用非 root 用户,将 root 用户保留用于特定的管理任务,如果运行高负载程序,请控制资源消耗(您可以使用配置文件限制 WSL2 的内存和 CPU)。
正在使用容器进行开发尽量将代码和工具放在同一“侧”(Linux 或 Windows),以避免因使用跨文件系统而导致的 I/O 瓶颈。如果在容器内编译,请将项目放在 WSL2 文件系统中,并使用直接卷从 Docker 访问它们。
适用于企业或生产环境除了 Docker 之外,还必须使用 Kubernetes 等编排工具,并应用额外的安全策略(例如镜像扫描、私有日志访问控制、凭证轮换等)。专业的公司可以帮助您设计开发和部署架构,将 WSL2、Docker、CI/CD 和云服务(Azure、AWS)与相应的安全措施集成在一起。 网络安全.
就 WSL2 的安全性而言即使它运行在轻量级虚拟机中,您仍然需要应用安全补丁、使用防火墙,并保护 Windows 主机和 Linux 发行版。此外,请确保容器化应用程序不会向外部网络暴露不必要的端口或服务。
WSL 中 Windows 和 Linux 之间的互操作性
WSL2 的优势之一是 Windows 和 Linux 命令之间良好的兼容性。您可以在同一流程中混合使用来自两个世界的工具,这对于脚本和自动化非常有用。
从 Windows 终端(PowerShell 或 CMD)您可以通过以下方式启动 Linux 命令 wsl例如,列出以下内容 C:\temp 运用 ls -la 来自 Linux:
wsl ls -la
您还可以将双方的筛选条件结合起来使用。,例如:
wsl ls -la | findstr "git"
反之亦然,即从 WSL 使用 Windows 命令。 加 .exe例如,要编辑文件 .bashrc 使用 Windows 记事本从您的用户帐户中打开:
notepad.exe .bashrc
这种互操作性有助于完成诸如此类的任务。 过滤输出 ipconfig.exe 同 grep在 Linux 系统中打开图形编辑器,或者在两个系统中处理文件,而无需不断切换窗口。
WSL2 中的 Git、数据库和 GPU 配置
除了 Docker 之外,WSL2 还提供了一个现代化的开发环境。 它通常包括使用 Git 进行版本控制、数据库,在某些情况下,还包括用于机器学习或计算密集型任务的 GPU 加速。
对于 Git,建议在 WSL2 中工作。 使用 Linux Git 命令行界面,通过 SSH 密钥或凭据管理器连接到 GitHub、GitLab 或类似服务。VS Code 与 Git 无缝集成,支持以可视化方式管理分支、提交和冲突。
关于数据库您可以在 WSL2 中安装和管理 MySQL、PostgreSQL、MongoDB、Redis 或 SQLite 等数据库引擎,并将容器连接到它们,反之亦然。针对每种数据库,都有专门的指南指导您如何在 WSL2 中运行它们,从而充分利用它们接近原生数据库的性能。
如果你从事人工智能或高性能计算方面的工作WSL2 在 Windows 11 上支持 GPU 加速。 驱动程序 适用。这允许您在 Linux 系统上,在 WSL2 中,甚至在 Docker 容器中,直接使用计算机的显卡运行 TensorFlow 或 PyTorch 等框架。
整个生态系统可以与 CI/CD 管道和云服务集成。这样,您在 Windows 笔记本电脑上使用 WSL2 和 Docker 进行开发和测试的内容,与您之后将在生产环境中部署的环境(在容器、Kubernetes 或托管服务中)非常相似。
Docker Desktop 和 WSL2 常见问题排查
无论你设置得多么完善,问题迟早都会出现。了解常见的故障以及如何解决这些故障可以避免很多麻烦,尤其是在网络受限的企业环境中。
一个经典的例子是传统的 Docker “wsl” 上下文 来自较旧版本的 Docker for WSL。如果您运行 docker context ls 你会看到一个名为“上下文”的上下文 wsl它很可能已经过时,并会导致诸如“打开 //./pipe/docker_wsl:系统找不到指定的文件”之类的错误。
解决方法是删除旧的上下文。 搭配:
docker context rm wsl
移除后,Docker 将使用默认上下文。 对于 Windows 和 WSL2,避免因管道不再存在而导致的 Docker 守护进程连接错误。
另一个非常常见的问题是通过公司代理进行工作。 这需要通过身份验证 usuario:contraseña当在环境变量中包含凭据时,Docker Desktop 经常会抛出错误。 HTTP_PROXY 或者在程序的直接配置中,显示诸如“用户配置中的 HTTP 代理无效:不得包含凭据”之类的消息。
在这些情况下,有几种相对更安全的选择。使用外部身份验证代理(例如 CNTLM)来管理凭据并公开无需用户名/密码的本地代理;在 Windows 和 Docker 中配置代理,无需将凭据嵌入 URL;或者使用专用凭据存储。手动编辑 settings.json o config.json 在 Docker Desktop 的 URL 中强制使用用户名:密码通常会导致 Docker 启动失败或忽略该设置。
如果问题出在 WSL2 安装上 (执行过程中出错) wsl --install 或者在启动发行版时),建议查看 WSL 故障排除指南:检查 Windows 功能是否已正确启用,WSL2 内核是否已正确安装,以及系统是否已更新到最新补丁。
对于其他更具体的问题 (例如 Docker 存储路径、挂载外部磁盘、运行 Linux GUI 应用程序等),官方 WSL 文档及其存储库问题中包含示例命令,例如: wsl --mount 以及针对每种情况的具体配置。
结合你所看到的所有内容,你已经为在 Windows 11 上搭建现代开发环境奠定了非常坚实的基础。 借助 WSL2、Docker Desktop 和 VS Code,您可以像在原生发行版上一样使用 Linux 容器,集成 Git 和数据库,在需要时使用 GPU 加速,最重要的是,其性能和灵活性远超传统虚拟化,同时还能保持良好的安全性和对资源的控制。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。
