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

发布于:2025-08-05 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、引言

在开发者工具链中,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; then
    echo "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 2 VMware
启动速度 极快(秒级) 较慢(通常需要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已经足够胜任,并且能提供更流畅的开发体验。

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


网站公告

今日签到

点亮在社区的每一天
去签到