Windows安装 WSL2、Ubuntu 、docker(详细步骤 , 弃用 docker desktop )

前言

在现代软件开发领域,容器化技术已经成为提升应用部署效率和环境一致性的关键手段。Docker 作为一款卓越且被广泛应用的容器化平台,凭借其独特的技术架构,允许开发者将应用程序及其所需的全部依赖项,完整地打包进一个高度可移植的容器中。这一创新的技术方案,使得应用无论部署在何种基础环境,无论是本地开发机、测试服务器,还是复杂的生产集群,都能以高度一致的方式稳定运行,极大地降低了因环境差异导致的应用故障风险。在 Windows 操作系统生态中,Docker Desktop 凭借其出色的易用性,成为了广大开发者安装 Docker 的首选途径。它精心设计的用户友好型图形界面,将原本复杂繁琐的 Docker 安装与日常管理流程大幅简化。通过直观的操作界面,即使是初次接触 Docker 的新手,也能在短时间内轻松完成安装,并且在后续的镜像管理、容器启停、网络配置等操作中,享受到高效便捷的使用体验。

然而,如同任何技术产品一样,Docker Desktop 在带来便利的同时,也存在一些难以回避的局限性。从功能层面来看,尽管其功能覆盖广泛,但仍有部分高级功能在 Docker Desktop 上无法充分释放其全部潜力,甚至某些前沿功能还处于试验阶段,稳定性和完整性有待进一步提升。这无疑会对那些依赖这些功能进行深度开发和优化的用户,造成显著的使用体验影响。在资源占用和兼容性方面,作为一个独立运行的大型应用程序,Docker Desktop 在运行过程中不可避免地会占用相当数量的系统资源,包括内存、CPU 等关键硬件资源。这对于那些运行在硬件配置有限的开发环境,或者同时运行多个资源密集型应用程序的用户来说,可能会导致系统整体性能下降。更为棘手的是,Docker Desktop 与其他应用程序之间偶尔会出现兼容性冲突,这不仅增加了用户排查和解决问题的难度,也可能会对正在进行的开发工作造成不必要的中断。

此外,对于长期沉浸在命令行操作环境,习惯通过简洁高效的命令行指令完成各项任务的开发者而言,Docker Desktop 的图形化界面反而可能成为一种操作负担。他们更倾向于在熟悉的命令行交互模式下,对 Docker 进行精细化控制。而在 Windows Subsystem for Linux 2(WSL2)中安装 Docker Engine,则恰好满足了这部分用户的需求。

WSL2 是微软投入大量研发资源精心打造的一项前沿技术,它为 Windows 系统用户带来了前所未有的 Linux 环境运行体验。通过 WSL2,用户可以在 Windows 系统上近乎原生地运行完整的 Linux 环境,并且在性能表现和兼容性方面都达到了行业领先水平。在 WSL2 中安装 Docker Engine,开发者不仅能够获得更为纯粹、原生的 Docker 使用体验,充分发挥 Docker 的全部技术优势,还能巧妙避开 Docker Desktop 存在的诸多限制与兼容性问题。同时,命令行交互方式也让习惯使用命令行的开发者能够延续他们熟悉的操作习惯,极大地提高开发效率。

一、WSL 2和Hyper-V的区别

WSL 2(Windows Subsystem for Linux 2) 和 Hyper-V 是微软提供的两种不同的虚拟化技术,各有优缺点,适用于不同的使用场景。详细比较如下:

特性WSL 2Hyper-V
定义提供 Linux 子系统,允许直接运行完整 Linux 内核Windows 的完整虚拟化技术,用于运行虚拟机和服务
虚拟化方式较轻量的虚拟化,基于虚拟机的 Linux 内核(使用 VM 技术)完整虚拟机,每个虚拟机拥有独立的资源和内核
内核直接使用微软提供的 Linux 内核版本完全分离的操作系统(可以运行多种操作系统)
资源使用更高效,内存和 CPU 分配动态调整固定资源分配(根据虚拟机设置)
用户体验更接近本地 Linux 环境,深度集成 Windows完全独立,与 Windows 隔离

在资源有限的情况下,考虑到后期开发中,要通过开发工具打包 docker 镜像,WSL 2 就成为了更优之选。它能在 Windows 系统内高效运行 Ubuntu,不仅节省资源,还能无缝对接 Windows 开发环境,为后续镜像打包等操作提供极大便利,有效提升开发效率。

二、 安装 WSL2

1. BIOS开启虚拟化

Windows机器需要支持虚拟化,并且需要在BIOS中开启虚拟化技术,因为WSL2基于Hyper-V 。但是具体安装WSL2不需要额外安装Hyper-V因为WSL2中包含了Hyper-V虚拟化技术。
(进入BIOS,选择Configuration选项,选择 Intel Virtual Technology。不同品牌的机器有不同的设置界面,根据具体情况自行设置,不再详细说明。)

2. 查看先决条件

Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用命令安装 。 如果使用的是更早的版本需要手动安装。
以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令:

systeminfo


上面的图显示我的系统版本19045 ,可以在命令行操作继续完成安装。

3. 开启“适用于Linux的Windows子系统”

以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

4. 启用虚拟机功能

以管理员身份打开 PowerShell 然后输入以下命令:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

5. 将WSL设置为版本2

以管理员身份打开 PowerShell 然后输入以下命令:

wsl --set-default-version 2

6. 更新WSL内核

以管理员身份打开 PowerShell 然后输入以下命令:

wsl --update

7.其他WSL常用命令

# https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands 可以查看命令
wsl --list --verbose #列出已安装的 Linux 发行版
wsl --status # 检查 WSL 状态
wsl --help # Help 命令
wsl --shutdown #关闭
wsl hostname -I #标识 IP 地址

三. WSL2 安装 Ubuntu-24.04

1. 列出发行版本

以管理员身份打开 PowerShell 然后输入以下命令:

wsl --list --online  #列出发行版本


如果出现下列情况


原因 raw.githubusercontent.com 这个域名无法访问,一般更改DNS即可解决

改好dsn再次尝试

2.安装 Ubuntu

以管理员身份打开 PowerShell 然后输入以下命令:

wsl --install # 默认安装
wsl --install -d Ubuntu-22.04 #安装指定版本

四、WSL2 Ubuntu-24.04 开启ssh并设置自动启动

在进行开发工作时,为了能够在不同设备间灵活协作,实现代码、数据的高效交互,需要搭建一个便捷的跨主机访问环境。考虑到我们主要依托 Windows 系统开展工作,且在 Windows Subsystem for Linux 2(WSL2)中运行开发环境,因此,确保局域网内其他主机能够通过 ssh 便捷登录 WSL2 就显得尤为重要。这一配置完成后,团队成员可以直接从各自的设备连接到 WSL2 环境,无需繁琐的文件传输和环境搭建过程,从而极大地提升开发协作效率,保障项目顺利推进 。

1. WSL2 Ubuntu 安装openssh-server

登录 Ubuntu 系统运行下列命令

sudo apt update
sudo apt install openssh-server


  1. WSL2 启用systemd
    修改 etc/wsl.conf 文件
sudo vi /etc/wsl.conf


然后按esc退出编辑模式,按两次shift保存退出切换至windows,打开 Windows PowerShell(管理员),运行 wsl --shutdown 关闭wsl 重新启动。

# 在 Windows PowerShell(管理员)中运行
wsl --shutdown

再重新打开 ubuntu, 使 wsl 彻底重新启动以便启用 systemd。然后在 wsl 中运行:

## ubuntu 中运行
sudo systemctl enable ssh
sudo systemctl start ssh

2. Windows 中开启 22 端口转发至 WSL2

查看ubuntu 的ip地址

#在 ubuntu 执行
ip addr

## 在 Windows PowerShell(管理员)中运行
## 先查看是否有22端口的转发
netsh interface portproxy show v4tov4
## 有的话删除
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=22
## 然后添加22端口转发至wsl2, ip地址connectaddress=对应 ubuntu 内查看的 ip地址
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=172.22.92.117 connectport=22

## 3 . SSH登录WSL2
如果局域网登录在windows主机上添加防火墙规则,使局域网其他主机可以访问ssh
MobaXterm连接为例:


至此,在windows主机上可以通过ssh登录wsl2 ubuntu了。

五、WSL2 Ubuntu-24.04 安装docker

1.安装依赖

# 在 ubuntu 执行
sudo apt-get update # 更新内核
sudo apt-get install ca-certificates curl gnupg #安装依赖1
2
3
4


2.导入 Docker 官方 GPG 密钥

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

3 .添加 Docker 官方仓库

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


再次更新软件包列表

4 .安装 Docker

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


安装完成如下图:

六、WSL2 + DOKER +IDEA 开发到发布

在现代软件开发流程中,借助 WSL2(Windows Subsystem for Linux 2)搭建稳定的 Linux 运行环境,搭配 Docker 进行高效的容器化管理,再结合 IDEA 这一强大的集成开发工具,能够构建出一套流畅且高效的开发体系。从项目的初始开发阶段,在 IDEA 中进行代码的编写与调试,利用 WSL2 提供的类 Linux 环境,充分发挥各类开源工具和库的优势;到通过 Docker 将开发成果及其依赖项打包成标准化的镜像,实现应用的可移植性和环境一致性;最后将打包好的 Docker 镜像发布到指定的镜像仓库或目标服务器,完成整个从开发到部署的闭环流程。这一系列技术的协同运用,不仅能显著提升开发效率,还能有效降低因环境差异导致的部署问题,确保项目的顺利交付。

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

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

相关文章

移动端测试的挑战与解决方案:兼容性、网络问题及实战策略

引言 移动应用已成为用户触达服务的核心入口,但移动端测试面临设备多样性、网络波动、用户场景复杂等多重挑战。据Statista统计,2023年全球活跃移动设备超180亿台,操作系统(Android/iOS)版本碎片化率超30%,这对测试工程师提出了极高要求。本文深度解析移动端测试的核心痛…

kron积计算mask类别矩阵

文章目录 1. 生成类别矩阵如下2. pytorch 代码3. 循环移动矩阵 1. 生成类别矩阵如下 2. pytorch 代码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0…

DeepSeek 概述与本地化部署【详细流程】

目录 一、引言 1.1 背景介绍 1.2 本地化部署的优势 二、deepseek概述 2.1 功能特点 2.2 核心优势 三、本地部署流程 3.1 版本选择 3.2 部署过程 3.2.1 下载Ollama 3.2.2 安装Ollama 3.2.3 选择 r1 模型 3.2.4 选择版本 3.2.5 本地运行deepseek模型 3.3.6 查看…

foobar2000设置DSP使用教程及软件推荐

foobar2000安卓中文版:一款高品质手机音频播放器 foobar2000安卓中文版是一款备受好评的高品质手机音频播放器。 几乎支持所有的音频格式,包括 MP3、MP4、AAC、CD 音频等。不论是经典老歌还是最新的流行音乐,foobar2000都能完美播放。除此之…

制作一个项目用于研究elementUI的源码

需求:修改el-tooltip的颜色,发现传递参数等方法都不太好用,也可以使用打断点的方式,但也有点麻烦,因此打算直接修改源码,把组件逻辑给修改了 第一步下载源码 源码地址 GitHub - ElemeFE/element: A Vue.j…

DDoS技术解析

这里是Themberfue 今天我们不聊别的,我们聊聊著名的网络攻击手段之一的 DDoS,看看其背后的技术细节。 DoS 了解 DDoS 前,先来讲讲 DoS 是什么,此 DoS 而不是 DOS 操作系统啊。1996年9月6日,世界第三古老的网络服务提供…

【学习资源】时间序列数据分析方法(1)

时间序列数据分析是一个有趣的话题,让我们多花一些时间来研究。此篇为第一篇文章。主要介绍特征提取方法、深度学习时序数据分析模型、参考资源。期望能帮助大家解决工业领域的相关问题。 1 特征提取方法:信号处理 (来源:INTELLIGENT FAULT DIAGNOSIS A…

0基础学LabVIEW

对于零基础的朋友来说,学习LabVIEW需要一个科学的学习路径和方法。通过观看优质的B站教程打好基础,再结合实际项目进行实践操作,能够快速提升LabVIEW的应用能力。以下是从入门到进阶的学习建议。 ​ 一、利用B站入门教程打基础 筛选优质教程…

微软AutoGen高级功能——Selector Group Chat

介绍 大家好,这次给大家分享的内容是微软AutoGen框架的高级功能Selector Group Chat(选择器群聊),"选择器群聊"我在给大家分享的这篇博文的代码中有所体现微软AutoGen介绍——Custom Agents创建自己的Agents-CSDN博客,但是并没有详…

高通推出骁龙游戏超级分辨率™:充分释放移动游戏性能,带来更持久的续航

Snapdragon Elite Gaming 一直致力于为每位用户打造卓越游戏体验。骁龙支持众多端游级特性,包括144FPS游戏体验、True 10-bit HDR支持的最高视觉质量的超流畅图形,让玩家可以畅享超10亿色的游戏体验。骁龙将许多移动端首创特性引入备受玩家喜爱的游戏中&…

HCIA项目实践--RIP的拓展配置

9.4.7 RIP的拓展配置 (1)RIPV2的手工认证 RIPv2 的手工认证是增强网络安全性的手段。管理员手动配置密钥,路由器在收发 RIPv2 路由更新消息时,会对消息中的认证信息进行检查。发送方添加密钥,接收方用预设密钥验证。若…

Jenkins 配置 Git Repository 五

Jenkins 配置 Git Repository 五 这里包含了 Freestyle project 任务类型 和 Pipeline 任务类型 关于 Git 仓库的配置,如下 不同的任务类型,只是在不同的模块找到 配置 Git 仓库 找到 Git 仓库配置位置之后,所有的任务类型配置都是一样的 …

Python + WhisperX:解锁语音识别的高效新姿势

大家好,我是烤鸭: 最近在尝试做视频的质量分析,打算利用asr针对声音判断是否有人声,以及识别出来的文本进行进一步操作。asr看了几个开源的,最终选择了openai的whisper,后来发现性能不行,又换了…

红队视角出发的k8s敏感信息收集——持久化存储与数据泄露

在Kubernetes集群中,持久化存储卷如同数据的保险箱,承载着应用运行所必需的各类敏感信息。然而,从红队视角出发,这些存储卷也可能成为攻击者觊觎的目标。通过巧妙地利用配置不当或已知漏洞,攻击者能够从中收集到包括密…

微信服务号推送消息

这里如果 没有 就需要点新的功能去申请一下 申请成功之后就可以设置模版消息 推送到用户接受的页面是 需要后端调用接口 传递token 发送给客户

[Spring] Spring常见面试题

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

Edge浏览器清理主页

我们都知道,Microsoft Edge浏览器是微软创造的搜索浏览器,Windows10、11自带。但是你可以看到,每次你打开Edge浏览器的时候都可以看到许多的广告,如图: 导致打开Edge浏览器的时候会遭受卡顿,广告骚扰&#…

【编写UI自动化测试集】Appium+Python+Unittest+HTMLRunner​

简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以python文件模式执行脚本生成测试报告 下载与安装 下载需要自动化测试的App并安装到手机 获取AppPackage和AppActivity 方法一 …

Apollo 9.0 参考线生成器 -- ReferenceLineProvider

文章目录 1. Planning 与 Routing交互1.1 路由请求RoutingRequest1.2 路由响应RoutingResponse1.3 换道过程 2. 创建参考线线程2.1 创建参考线生成器2.2 启动参考线线程 3. 参考线周期生成3.1 创建参考线3.2 更新参考线 4. 参考线平滑4.1 设置中间点anchor points4.2 平滑算法平…

游戏引擎学习第103天

仓库:https://gitee.com/mrxiao_com/2d_game_2 回顾bug 接下来回顾一下这个bug的具体情况。当前是一个调试视图,我们并不是直接在调试视图下工作,而是在进行相关的调试。展示了地图,这里是环境贴图,上面是正在使用的环境贴图&am…