当前位置: 首页 > 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.lryc.cn/news/610140.html

相关文章:

  • Flutter 对 Windows 不同版本的支持及 flutter_tts 兼容性指南
  • 离线Docker项目移植全攻略
  • Oracle 在线重定义
  • [GYCTF2020]FlaskApp
  • 【编程实践】点云曲率计算与可视化
  • 八股——Kafka相关
  • 【Pytorch✨】LSTM04 l理解长期记忆和短期记忆
  • 第12届蓝桥杯Scratch_选拔赛_初级组_真题2020年8月23日
  • 神经网络---非线性激活
  • C++进阶-封装红黑树模拟实现map和set(难度较高)
  • 李沐写作笔记
  • 嵌入式 C 语言入门:函数指针基础笔记 —— 从计算器优化到指针本质
  • SurferCloud vs LightNode 海外云服务商详细对比
  • 【无标题】标准 I/O 中的一些函数,按功能分类说明其用法和特点
  • [特殊字符] 50 天 50 个项目 — 完结篇
  • 【Docker安装】Ubuntu 24.04.2 LTS系统下安装Docker环境——指定APT源安装方式
  • 基于MobileNet卷积神经网络和Xception神经网络算法的人脸表情识别系统的设计与实现
  • C语言的控制语句
  • 每日一leetcode:移动零
  • 【Java】HashMap线程安全吗?
  • allegro建库--1
  • 【云馨AI-大模型】2025年8月第一周AI浪潮席卷全球:创新与政策双轮驱动
  • MLS平滑滤波
  • 洛谷 P3373 【模板】线段树 2- 普及+/提高
  • 《Python 实用项目与工具制作指南》· 3.1 实战·开发题目数据生成器
  • 思科 UCS Fabric Interconnect 和 UCS Manager 简介
  • 比起登天,孙宇晨更需要安稳着陆
  • C语言编程中常用的预定义宏
  • 浅谈 Python 中的 next() 函数 —— 迭代器的驱动引擎
  • 【深度学习新浪潮】近三年城市级数字孪生的研究进展一览