当前位置: 首页 > news >正文

WSL安装Ubuntu与Docker环境,比VMware香

一、引言

在开发者工具链中,Linux环境隔离与资源虚拟化是提高工作效率的关键。目前主流的解决方案有两大方向:基于Hyper-V的Windows Subsystem for Linux(WSL)和基于传统虚拟化技术的VMware。本文将详细介绍如何在WSL中安装Ubuntu并配置Docker环境,并从多个维度对比WSL与VMware的优劣,帮助开发者选择最适合自己的开发环境。

二、WSL安装Ubuntu详细步骤

2.1 启用WSL功能

首先需要在Windows系统中启用WSL相关功能,有两种方式可供选择:

图形界面方式:

  1. 按下Win + S,搜索"启用或关闭Windows功能"
  2. 勾选"适用于Linux的Windows子系统"和"虚拟机平台"
  3. 点击确定并重启电脑

命令行方式(管理员权限):

# 启用WSL
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart# 重启电脑
shutdown /r /t 0

2.2 安装WSL2内核更新包

  1. 下载适用于x64系统的WSL2 Linux内核更新包:
    https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  2. 运行安装包并按照提示完成安装

2.3 设置WSL2为默认版本

wsl --set-default-version 2

2.4 安装Ubuntu

  1. 打开Microsoft Store,搜索"Ubuntu"
  2. 选择所需版本(推荐Ubuntu 22.04 LTS)
  3. 点击"获取"进行安装
  4. 首次启动会要求设置用户名和密码,完成后即可进入Ubuntu环境

2.5 配置Ubuntu基础环境

# 更新系统
sudo apt update && sudo apt upgrade -y# 安装必要工具
sudo apt install -y build-essential curl wget git

三、在Ubuntu中安装Docker和Docker Compose

3.1 安装Docker Engine

# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc# 安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 设置Docker稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io# 将当前用户添加到docker组,避免每次使用sudo
sudo usermod -aG docker $USER

注意:添加用户到docker组后需要重启WSL才能生效,可以在PowerShell中执行wsl --shutdown然后重新启动Ubuntu

3.2 安装Docker Compose

# 下载Docker Compose二进制文件
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose# 赋予执行权限
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose# 验证安装
docker compose version

3.3 配置Docker开机启动

# 编辑sudoers文件允许无密码启动docker服务
echo "$USER ALL=(ALL) NOPASSWD: /usr/bin/service docker start" | sudo tee -a /etc/sudoers# 创建启动脚本
cat << EOF > ~/.bashrc.d/start-docker.sh
#!/bin/bash
# 检查Docker服务是否运行
if ! service docker status > /dev/null 2>&1; thenecho "Starting Docker service..."sudo service docker start
fi
EOF# 添加执行权限
chmod +x ~/.bashrc.d/start-docker.sh# 将脚本添加到bashrc
echo "source ~/.bashrc.d/start-docker.sh" >> ~/.bashrc

3.4 验证Docker安装

# 检查Docker版本
docker --version# 运行hello-world容器验证
docker run hello-world

如果一切正常,会看到"Hello from Docker!"的欢迎消息。

四、WSL与VMware深度对比分析

特性WSL 2VMware
启动速度极快(秒级)较慢(通常需要10-30秒)
资源占用低,动态分配高,预分配固定资源
与Windows集成极佳,文件系统互通,网络共享一般,需通过共享文件夹/网络访问
GUI支持有限(需额外配置X Server)原生支持,体验完整
系统隔离性中,共享内核高,完全独立的操作系统
硬件虚拟化依赖Hyper-V支持多种虚拟化技术
多系统支持仅限Linux发行版支持Windows、Linux、macOS等
快照功能有限支持完善的快照和克隆功能
网络配置自动配置,简单灵活但复杂,支持多种网络模式
适用场景开发环境、命令行工具、容器运行完整系统测试、多系统环境、需要GUI的场景

4.1 性能对比

  • 启动速度:WSL 2完胜,通常在几秒钟内即可启动,而VMware需要加载完整的操作系统,启动时间长得多。
  • 资源利用:WSL 2采用动态资源分配,只会使用实际需要的内存和CPU资源;VMware则需要预先分配固定资源,即使闲置也会占用这些资源。
  • 文件系统性能:WSL 2在Linux文件系统内的性能接近原生,但访问Windows文件系统(/mnt/c等)时性能会有明显下降;VMware通过共享文件夹访问宿主文件系统时性能也有损耗,但相对稳定。

4.2 适用场景分析

优先选择WSL 2的场景:

  • 主要进行命令行开发工作
  • 需要频繁在Windows和Linux之间切换
  • 资源有限的笔记本电脑
  • 主要使用Docker等容器技术
  • 快速搭建开发环境

优先选择VMware的场景:

  • 需要完整的Linux GUI桌面环境
  • 进行系统级别的测试和开发
  • 需要运行多个不同的操作系统
  • 对网络配置有复杂需求
  • 需要完善的快照和克隆功能

五、常见问题与解决方案

5.1 WSL相关问题

  1. WSL启动失败
# 重置WSL
wsl --shutdown
wsl --set-default-version 2
  1. Ubuntu空间不足
# 查看WSL磁盘使用情况
wsl --diskUsage# 扩展WSL磁盘大小
wsl --shutdown
diskpart
# 在diskpart中执行
select vdisk file="C:\Users\<用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
expand vdisk maximum=<新大小MB>
exit

5.2 Docker相关问题

  1. Docker服务无法启动
# 手动启动并查看日志
sudo service docker start --debug
  1. 网络连接问题
# 检查DNS配置
cat /etc/resolv.conf# 重启网络服务
sudo service networking restart

六、总结

WSL 2提供了一种轻量级、高性能的Linux开发环境解决方案,特别适合需要频繁在Windows和Linux之间切换的开发者,尤其是在使用Docker等容器技术时表现出色。通过本文介绍的步骤,你可以快速搭建一个稳定高效的Ubuntu开发环境,并配置好Docker生态系统。

与传统的VMware相比,WSL 2在启动速度和资源利用上有明显优势,但在系统隔离性和GUI支持方面稍逊一筹。选择哪种方案应根据具体的开发需求来决定,对于大多数后端开发和DevOps工作,WSL 2已经足够胜任,并且能提供更流畅的开发体验。

希望本文能帮助你顺利搭建开发环境,提高开发效率。如果有任何问题或建议,欢迎在评论区留言讨论。

http://www.dtcms.com/a/315062.html

相关文章:

  • Sparse4D系列算法:迈向长时序稀疏化3D目标检测的新实践
  • Flutter开发 了解Scaffold
  • FinalShell 跳板机proxyjump使用
  • 105页PPT | 麦肯锡五年战略规划方法论精要
  • SRIO入门之官方例程仿真验证
  • 系统一个小时多次Full GC,导致系统线程停止运行,影响系统的性能,可靠性
  • 活动预告丨“百胜软件胜券AI全国巡讲”8月14日首站启幕,诚邀您共聚广州
  • 【清除pip缓存】Windows上AppData\Local\pip\cache内容
  • 【核心技术二】Uvicorn:高性能 ASGI 服务器
  • C语言实现单链表的操作
  • 机器学习(11):岭回归Ridge
  • 不损失清晰度情况对图片进行压缩的工具类(可通过地址也可以通过文件调用)
  • 基于实时音视频技术的远程控制传输SDK的功能设计
  • 基于特征融合的医学图像分类算法
  • #C语言——刷题攻略:牛客编程入门训练(四):运算(二)
  • 【基于超表面实现电磁感应透明(EIT)的复现与讲解】
  • Spring P1 | 创建你的第一个Spring MVC项目(IDEA图文详解版,社区版专业版都有~)
  • [Shell编程] 零基础入门 Shell 编程:从概念到第一个脚本
  • 基于TurboID的邻近标记质谱(PL-MS)实验指南:从质粒构建到质谱鉴定
  • 【OS】操作系统概述
  • 互联网医院整体项目套表整理过程文档全流程分析
  • Stanford CS336 assignment1 | Byte-Pair Encoding (BPE) Tokenizer
  • 飞算JavaAI:颠覆传统开发的智能利器
  • Effective C++ 条款22: 将成员变量声明为private
  • Pixel 4D 3.4.4.0 | 支持丰富的壁纸资源,高清画质,高度的个性化设置能力,智能推荐功能
  • Ubuntu 下 MySQL 离线部署教学(含手动步骤与一键脚本)
  • 力扣面试150题--加一
  • ZCC1004E-120V 3A 零功耗使能异步降压电源芯片
  • 人工智能之数学基础:条件概率及其应用
  • JS中的Set和WeakSet联系与区别