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

關掉代理:
在這里插入圖片描述
解決方法:手動下載離線安裝包,地址,
在這里插入圖片描述
安裝成功,輸入命令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…