WSL,Windows Subsystem for Linux,是微软开发的轻量级虚拟机环境,允许用户在 Windows上运行完整的Linux内核和用户空间,适用于Windows的Linux子系统。能实现:

  • 运行原生的Linux命令和程序(如apt,gcc,make等);
  • 拥有独立的文件系统;
  • 支持网络、进程等Linux功能。

另有一说,可在WSL上模拟出有限的Linux环境,而不是Linux发行版。

安装

安装WSL需要有一些前置操作。

前置操作

打开控制面板,找到【程序和功能】,点击左侧的【启用或关闭Windows功能】,勾选【适用于Linux的Windows子系统】,需要同时勾选【虚拟机平台】(下面截图未勾选):
在这里插入图片描述
需要重启Windows电脑生效。

Docker Desktop

安装WSL有两种方式:

  • 通过Docker Desktop:实际上还是通过下面的命令行;
  • 通过命令行:执行任意wsl命令行可触发WSL安装。

下载并安装Docker Desktop时会出现如下提示:
在这里插入图片描述
或者:
在这里插入图片描述
正常情况下,用管理员身份启动Docker Desktop时会触发WSL的安装或升级:
在这里插入图片描述
也可手动输入命令行:
在这里插入图片描述
安装WSL系统需要有较好的网络环境(代理),否则下载速度会非常慢。

安装成功后,输入命令wsl -v查看WSL版本号
在这里插入图片描述
输入命令wsl --listwsl --list --verbose查看子系统列表:
在这里插入图片描述
注意到在NAME前面有个*,VERSION为2。

下面会继续论述。

WSL和Docker Desktop

Docker Desktop是Docker官方为Windows和macOS提供的一个桌面应用程序,集成:

  • Docker Engine:引擎
  • Docker CLI:命令行工具
  • Kubernetes:可选
  • 资源管理器集成
  • 与WSL2的深度集成

新版Docker Desktop(v2.3+)在Windows上强烈依赖WSL2,官方推荐并默认使用WSL2作为后端运行环境。

功能使用WSL2的优势
完整的Linux内核支持Docker 需要Linux特性(如cgroups、namespaces)
更好的性能相比Hyper-V虚拟机更轻量、更快
文件系统互通可无缝访问Windows文件系统
与Ubuntu等发行版共存可在多个终端中使用Docker CLI

脱离WSL2,能否在Windows上安装Docker Desktop?

从2020年以后发布的Docker Desktop版本来看,已经无法完全绕过WSL2来运行完整功能的Docker Desktop。

旧版本,如Windows 10企业版/专业版,可使用Hyper-V + Windows Containers来运行Docker Desktop,但:

  • 不支持Linux容器(除非切换容器类型)
  • 不适合开发者日常使用
  • 很多功能受限(如挂载本地目录、构建镜像等)

参考:Windows10系统Docker for Windows与VMWare关于Hyper-V问题。

Ubuntu

上面通过Docker Desktop方式安装WSL,并启动一个docker-desktopLinux子系统。

相信很多接触Linux的同学都是从Ubuntu开始的。WSL能不能安装Ubuntu系统呢?

当然可以,输入命令wsl --install Ubuntu安装Ubuntu系统:
在这里插入图片描述
报错原因是因为开了代理,就比如此时无法打开Microsoft Store一样。

关掉代理:
在这里插入图片描述
解决方法:手动下载离线安装包,地址,
在这里插入图片描述
安装成功,输入命令wsl --list --verbose
在这里插入图片描述
在CMD下新增窗口的效果:
在这里插入图片描述

WSL1和WSL2

Windows1903版本以及以后还支持WSL2。WSL2基于Windows Hyper-V虚拟化技术,启用更全面的虚拟化功能。两者比较:WSL2和WSL1,两者不兼容。WSL2与大多数其他虚拟机产品在开启虚拟化加速技术诸如 Intel TV-x / AMD-V时是冲突的。

特性WSL1WSL2
内核支持模拟Linux系统调用(翻译)完整的Linux内核(基于轻量级虚拟机)
文件系统互通支持Windows与Linux文件系统互相访问访问Windows文件慢,Linux文件快
网络与Windows共享IP地址有自己的独立IP地址
GUI应用支持默认不支持(需额外配置)可通过设置支持GUI应用
启动速度稍慢(需要启动虚拟机)
硬件支持不支持USB、GPU直接访问更好地支持GPU、USB(需配合驱动)
优点文件系统可以无缝互操作;性能高,启动快支持完整的Linux内核功能,如docker,firewalld;更接近真实Linux环境;支持GUI、网络服务等高级功能
缺点不支持Linux内核特性(如systemd,iptables,mount等);不适合运行需要完整Linux内核的服务或容器,如Docker与Windows文件系统交互较慢;有自己的IP地址,需注意防火墙设置;启动稍慢
适合场景开发工具、脚本运行等需要完整Linux环境(如Docker、内核功能)

WSL1,模拟方式运行Linux用户态程序,不使用真正的Linux内核,将Linux系统调用翻译成Windows能理解的NT API。

WSL2,使用Hyper-V技术运行一个完整的Linux内核(轻量级虚拟机),对用户透明,所有Linux系统调用都直接运行在Linux内核中。

切换WSL版本

可为每个发行版单独设置使用的WSL版本:

wsl --set-version <DistributionName> 2
wsl --set-version <DistributionName> 1
wsl --set-version Ubuntu 2
wsl --set-version Debian 1

比如
在这里插入图片描述
遇到的问题,也就是上面看到的,设置为WSL1之后,Docker Desktop自动停止:
在这里插入图片描述
因此,对于Docker Desktop,不能使用WSL 1版本。

切换回去:
在这里插入图片描述
还是Stopped状态:
在这里插入图片描述
直接执行wsl命令即可启动Docker Desktop(启动默认发行版):
在这里插入图片描述

使用

WSL安装或升级成功后的效果:
在这里插入图片描述
有很多概要性介绍知识。

跨文件系统工作

包括:

  • 从Linux访问Windows文件
  • 使用Windows文件资源管理器访问Linux文件
    在这里插入图片描述
  • 从WSL启动Windows文件和程序(TODO);

GUI应用

可通过本机Windows交互操作(例如Alt-Tab、开始菜单启动、任务栏固定以及剪切和粘贴支持)使用基于图形的Linux应用程序。

可通过sudo apt install <TheApp Narme>在Ubuntu中尝试安装的部分应用列表:

  • gedit:基本文本编辑器
  • audacity:录制和编辑音频文件
  • blender:制作3D动画和可视化效果
  • gimp:编辑照片
  • nautilus:Linux文件资源管理器
  • vlc:视频播放器

GPU加速

在WSL中运行的Linux二进制文件可自动使用Windows中的GPL来加快性能。

网络集成

可以跨Windows和Linux操作系统轻松访问网络应用。

  • 从Windows访问Linux网络应用
    如果要在Linux分发版中生成网络应用,则可使用localhost从Windows应用(如Chrome浏览器)访问它。
  • 镜像模式网络
    WSL还包括一种称为镜像模式的新网络模式,添加IPv6支持等高级功能,并且能够访问局域网中的网络应用程序。

发行版管理

WSL是试用不同Linux发行版的好方法。
列出可安装的WSL发行版命令:wsl.exe -l -o
安装命名的WSL发行版命令:wsl.exe --install <DistroName>
列出可用的WSL发行版命令:wsl.exe -I

Docker Desktop集成

上面多次提及。

VS Code集成

可直接从VSCode使用WSL作为全时开发环境。

安装VSCode后,可从Windows终端安装远程WSL扩展:code -install-extension_ms-vscode-remote.remote-wsl

实战

读写文件

分两种场景:

  • 在WSL中访问本地Windows;
  • 在本地Windows下访问WSL系统。

在WSL2中,Windows的文件系统会自动挂载到/mnt目录下,比如Windows下的C盘,对应路径为/mnt/c
在这里插入图片描述
在这里插入图片描述

在Windows中访问Ubuntu文件,打开(文件)资源管理器,输入\\wsl$回车:
在这里插入图片描述
双击操作,和在Windows下一样:
在这里插入图片描述
设置永久挂载或软链接

如果你经常需要访问某个 Windows 文件夹,可以创建一个符号链接(软链接)到你的 home 目录:
ln -s /mnt/c/Users/YourName/Documents ~/win_docs
之后就可以用~/win_docs来快速访问 Windows 中的文档目录。

在 Docker 中挂载 Windows 本地目录(与 WSL2 配合)
当你使用 Docker Desktop 时,它会自动处理 WSL2 和 Windows 之间的文件系统桥接。

比如你在 Docker 命令中这样写:docker run -v /mnt/c/Users/YourName/mycode:/app myimage
等价于把 Windows 的 C:\Users\YourName\mycode 挂载到了容器的 /app 目录。

注意事项:

  • 不要在/mnt路径下运行git、npm、或编译工具(如make),因为性能差且可能导致数据损坏;
  • 避免在Windows资源管理器中直接编辑WSL2的Linux文件系统中的文件(如/home/xxx),这可能导致权限问题或文件损坏;
  • 推荐将项目放在Linux文件系统中(如/home/me),仅通过/mnt挂载做临时拷贝或共享。

告警

wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
在这里插入图片描述

Docker

在这里插入图片描述
根据上面的提示,让我去Docker Desktop设置下,但是找了一圈还是没有找到配置入口。还是得看文档,执行命令wsl --set-default Ubuntu
在这里插入图片描述
再次在WSL里的Ubuntu系统执行docker,可正常使用。

参考

  • 官方文档
  • GPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88956.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88956.shtml
英文地址,请注明出处:http://en.pswp.cn/web/88956.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React之旅-06 Ref

当你想让一个组件“记住”一些信息&#xff0c;但又不想这些信息触发新的渲染时&#xff0c;你可以使用 ref。使用 Ref 前&#xff0c;需要导入useRef&#xff0c;代码如下&#xff1a;import { useRef } from react;在您的组件内部&#xff0c;调用 useRef 并将您想要引用的初…

stm32-Modbus主机移植程序理解以及实战

目录一、背景二、代码理解&#xff08;一&#xff09;main()函数例程代码功能遇到的问题解决方式分析&#xff08;二&#xff09;eMBMasterPoll( void )函数例程代码1. 变量声明2. 协议栈状态检查3. 获取事件4. 事件处理&#xff08;switch-case&#xff09;4.1 EV_MASTER_READ…

c++判断文件或目录是否存在

#include<sys/stat.h>#include<fstream>#include<string>#include<stdio.h>#include<stdlib.h>#include<vector>#include<io.h>#include<iostream>bool IsFileGood(string strFileName, book bFile){if(bFile) \\文件{ifstrea…

Java设计模式之行为型模式(命令模式)

一、核心定义与设计思想 命令模式通过对象化请求&#xff0c;将操作的具体实现细节封装在命令对象中&#xff0c;使得调用者&#xff08;Invoker&#xff09;无需直接依赖接收者&#xff08;Receiver&#xff09;&#xff0c;仅需通过命令对象间接调用。这种设计支持以下能力&a…

大数据领域开山鼻祖组件Hadoop核心架构设计

一、Hadoop的整体架构 Hadoop是一个专为大数据设计的架构解决方案&#xff0c;历经多年开发演进&#xff0c;已逐渐发展成为一个庞大且复杂的系统。其内部工作机制融合了分布式理论与具体工程开发的精髓&#xff0c;构成了一个整体架构。 Hadoop最朴素的原理在于&#xff0c;它…

OneCode3.0 VFS分布式文件管理API速查手册

&#x1f4da; 前言&#xff1a;OneCode 3.0微内核引擎架构解析 在云原生与分布式系统日益普及的今天&#xff0c;文件管理系统面临着前所未有的挑战——海量数据存储、跨节点协同、多租户隔离以及弹性扩展等需求推动着传统文件系统向分布式架构演进。OneCode 3.0作为新一代企业…

UI前端与数字孪生结合实践探索:智慧物流的仓储自动化管理系统

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;传统仓储的 “效率黑洞” 与数字孪生的破局当仓库管理员在数万平的库房中…

使用layui的前端框架过程中,无法加载css和js怎么办?

这使用layui的前端框架过程中&#xff0c;无法加载css和js怎么办&#xff1f;里写自定义目录标题已经按要求下载并解压到指定位置了&#xff0c;但是感觉就是无法加载文件后台提示如下&#xff1a;那就我清理缓存当再次观察html页面时&#xff0c;发现页面最开始有两个< htm…

gitlab+TortoiseGit克隆生成ppk方式

1、第一步 2、第二步3、第三步4、第四步&#xff0c;如何使用这个ppk就可以了

VSCode中使用容器及容器编排docker-compose

前面笔者写了一篇博文&#xff1a;使用容器编排对go项目进行部署、调试&#xff0c;介绍了在Goland中如何使用容器&#xff0c;由于Goland的容器配置是可视化的&#xff0c;使用起来非常方便&#xff0c;VSCode中也有一个容器插件&#xff0c;但是笔者一直未使用过&#xff0c;…

深度学习入门:让神经网络变得“深不可测“⚡(二)

深度学习入门&#xff1a;让神经网络变得"深不可测" &#x1f9e0;⚡ 系列课程第二弹&#xff1a;深度学习的奇妙世界 前言&#xff1a;从浅到深的华丽转身 哈喽&#xff0c;各位AI探险家&#xff01;&#x1f44b; 欢迎回到我们的"让机器变聪明"系列课…

硅基计划2.0 学习总结 捌 异常与常用工具类

文章目录一、异常1. 防御性编程2. throw关键字3. throws关键字4. 捕获5. finally关键字二、自定义异常类三、常用工具类1. Date以及相关的类1. 创建时间&#xff08;基本弃用&#xff09;2. 捕获系统时间3. 获取当前年月日时分秒4. 日期加减5. 根据字符串创建日期6. 根据当前时…

2025-7-14-C++ 学习 排序(2)

文章目录2025-7-14-C 学习 排序&#xff08;2&#xff09;P1059 [NOIP 2006 普及组] 明明的随机数题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1说明/提示提交代码P1093 [NOIP 2007 普及组] 奖学金题目背景题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1输入…

微信131~140

1.在组件中使用store对象的数据 // 要想使用store中的数据以及方法 // 需要从 mobx-miniprogram-bindings 方法将 ComponentWithStore 方法 import { ComponentWithStore } from mobx-miniprogram-bindings // 导入store对象 import { numStore } from ../../../stores/numstor…

微美全息借区块链与DRL算法打造资源管理协同架构,达成边缘计算与区块链动态适配

在当今数字化浪潮汹涌的时代&#xff0c;边缘计算与区块链技术正逐步成为驱动技术革新与业务转型升级的核心动力。当这两项前沿技术相互融合&#xff0c;一个兼具高效性与安全性的任务处理系统便得以构建。为了充分挖掘边缘计算系统的性能潜力&#xff0c;避免任务卸载过程中的…

属性绑定

简写模式二.为什么要这样做布尔型attribute动态绑定多个值

链表算法之【获取链表开始入环的节点】

目录 LeetCode-142题 LeetCode-142题 给定一个链表的头节点head&#xff0c;返回链表开始入环的第一个节点&#xff0c;如果链表无环&#xff0c;则返回null class Solution {public ListNode detectCycle(ListNode head) {// checkif (head null || head.next null)retur…

【网络编程】KCP——可靠的 UDP 传输协议——的知识汇总

文章目录前言UDP 协议UDP 的关键指标/特性UDP 的典型应用场景KCP 协议的基础KCP 的构造KCP 协议特性KCP 的可靠传输机制——ARQ三种 ARQ 机制对比KCP 的选择性重传一、基础机制&#xff1a;选择性重传&#xff08;SR&#xff09;二、KCP 对 SR 的增强策略KCP 的激进重传策略——…

量子计算新突破!阿里“太章3.0”实现512量子比特模拟(2025中国量子算力巅峰)

​​摘要​​2025年量子计算竞争进入​​实用化临界点​​&#xff0c;阿里达摩院发布“太章3.0”量子模拟器&#xff0c;在全球首次实现​​512量子比特全振幅模拟​​&#xff0c;较谷歌Sycamore的53比特提升近10倍算力维度。本文深度解析三大技术突破&#xff1a;​​张量网…

DOM事件绑定时机:解决脚本提前加载导致的绑定失败

引言&#xff1a;一个让无数新手抓狂的常见错误在JavaScript开发中&#xff0c;尤其是在前端领域&#xff0c;有一个让无数新手抓狂的问题&#xff1a;明明写了事件监听代码&#xff0c;点击按钮却没有任何反应&#xff01;更令人困惑的是&#xff0c;代码逻辑看起来完全正确&a…