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

张裕  论坛元老 | 2025-2-15 23:04:27 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1416|帖子 1416|积分 4248

前言

在现代软件开发范畴,容器化技术已经成为提升应用部署服从和情况同等性的关键本领。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” >单击右键 >“以管理员身份运行”),然后输入以下命令:
  1. systeminfo
复制代码

上面的图体现我的系统版本19045 ,可以在命令行操作继承完成安装。
3. 开启“适用于Linux的Windows子系统”

以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令:
  1. dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
复制代码

4. 启用虚拟机功能

以管理员身份打开 PowerShell 然后输入以下命令:
  1. dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
复制代码

5. 将WSL设置为版本2

以管理员身份打开 PowerShell 然后输入以下命令:
  1. wsl --set-default-version 2
复制代码

6. 更新WSL内核

以管理员身份打开 PowerShell 然后输入以下命令:
  1. wsl --update
复制代码

7.其他WSL常用命令

  1. # https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands 可以查看命令
  2. wsl --list --verbose #列出已安装的 Linux 发行版
  3. wsl --status # 检查 WSL 状态
  4. wsl --help # Help 命令
  5. wsl --shutdown #关闭
  6. wsl hostname -I #标识 IP 地址
复制代码
三. WSL2 安装 Ubuntu-24.04

1. 列出发行版本

以管理员身份打开 PowerShell 然后输入以下命令:
  1. wsl --list --online  #列出发行版本
复制代码

如果出现下列情况


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

改好dsn再次实验

2.安装 Ubuntu

以管理员身份打开 PowerShell 然后输入以下命令:
  1. wsl --install # 默认安装
  2. 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 系统运行下列命令
  1. sudo apt update
  2. sudo apt install openssh-server
复制代码



  • WSL2 启用systemd
    修改 etc/wsl.conf 文件
  1. sudo vi /etc/wsl.conf
复制代码

然后按esc退出编辑模式,按两次shift保存退出切换至windows,打开 Windows PowerShell(管理员),运行 wsl --shutdown 关闭wsl 重新启动。
  1. # 在 Windows PowerShell(管理员)中运行
  2. wsl --shutdown
复制代码
再重新打开 ubuntu, 使 wsl 彻底重新启动以便启用 systemd。然后在 wsl 中运行:
  1. ## ubuntu 中运行
  2. sudo systemctl enable ssh
  3. sudo systemctl start ssh
复制代码

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

查看ubuntu 的ip地点
  1. #在 ubuntu 执行
  2. ip addr
复制代码

  1. ## 在 Windows PowerShell(管理员)中运行
  2. ## 先查看是否有22端口的转发
  3. netsh interface portproxy show v4tov4
  4. ## 有的话删除
  5. netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=22
  6. ## 然后添加22端口转发至wsl2, ip地址connectaddress=对应 ubuntu 内查看的 ip地址
  7. 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.安装依靠

  1. # 在 ubuntu 执行
  2. sudo apt-get update # 更新内核
  3. sudo apt-get install ca-certificates curl gnupg #安装依赖
  4. 1
  5. 2
  6. 3
  7. 4
复制代码


2.导入 Docker 官方 GPG 密钥

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

3 .添加 Docker 官方堆栈

  1. 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

  1. 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 镜像发布到指定的镜像堆栈或目的服务器,完成整个从开发到部署的闭环流程。这一系列技术的协同运用,不仅能显着提升开发服从,还能有用降低因情况差异导致的部署问题,确保项目的顺利交付。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表