Windows 10/11安装WSL、Ubuntu、Docker Desktop

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一样。

关掉代理:
在这里插入图片描述
反复重试还是失败的解决方法:手动下载离线安装包地址,得到Ubuntu2204-221101.AppxBundle文件。

安装方法:

  • 双击该文件,系统会自动调用应用安装程序完成安装;
    在这里插入图片描述
  • 通过PowerShell命令:Add-AppxPackage -Path "C:\Users\johnny\Downloads\Ubuntu2204-221101.AppxBundle"

本文使用第二种方式,上面的命令执行成功后,在开始菜单中找到Ubuntu并点击:
在这里插入图片描述
忽略第二个弹窗里的报错,出现如下提示:
在这里插入图片描述
首次运行会提示输入用户名和密码,完成初始化配置。

用户名密码必填,直接回车无效:
在这里插入图片描述
正常情况下,可通过命令行安装:
在这里插入图片描述
安装成功,输入命令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,可正常使用。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnny233

晚饭能不能加鸡腿就靠你了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值