<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VM on Nekonull's Garden</title><link>https://nekonull.me/tags/vm/</link><description>Recent content in VM on Nekonull's Garden</description><generator>Hugo</generator><language>zh-CN</language><copyright>CC-BY-SA-4.0</copyright><lastBuildDate>Thu, 29 Oct 2020 02:25:00 +0800</lastBuildDate><atom:link href="https://nekonull.me/tags/vm/index.xml" rel="self" type="application/rss+xml"/><item><title>WSL2, Docker, Virtualbox</title><link>https://nekonull.me/share/wsl2-docker-virtualbox/</link><pubDate>Thu, 29 Oct 2020 02:25:00 +0800</pubDate><guid>https://nekonull.me/share/wsl2-docker-virtualbox/</guid><description>&lt;blockquote&gt;
&lt;p&gt;2021/4/9 更新:
VMWare Player 16+ 无须配置，在检测到 Hyper-V 启动后自动调用 Hyper-V 后端了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Docker 在 Windows 上运行，实际上都是靠一个 Linux 虚拟机。早期 Docker 官方出了一个叫做 Docker Toolbox 的工具，其实就是 VirtualBox 加上一个精简过的只能运行 Docker 的 VM。后来 Docker 放弃了 Virtualbox 路线，转而使用 Windows 内置的 Hyper-V 作为底层 VM。但是 Hyper-V 平台一旦启用，就会导致 Virtualbox / VMWare 等其他虚拟机工具不可用，这一问题直到 VirtualBox 6 之后才算解决，此时 VirtualBox / VMWare 都可以调用 Windows 内置的 Hypervisor API 作为 VM 的执行引擎。&lt;/p&gt;
&lt;p&gt;所以来到 2020 年，在 Windows 10 20H2 上同时运行 WSL 2, Docker 和 VirtualBox 已经几乎是 painless 的了，只需要记住&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WSL 2 底层是一个跑在 Hyper-V 里的 VM&lt;/li&gt;
&lt;li&gt;因为 WSL 2 是一个真正的 VM，Docker 可以直接安装到 WSL 2 中，而不会遇到 WSL 1 的不兼容问题&lt;/li&gt;
&lt;li&gt;VirtualBox 通过 Hypervisor API 调用 Hyper-V 来执行 VM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;步骤也很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windows 开启相关功能：Hyper-V, 虚拟机监视器，虚拟机平台&lt;/li&gt;
&lt;li&gt;WSL 迁移到 version 2 (如果喜欢也可以留一个 WSL 1，毕竟比 VM 轻量，日常也基本够用)&lt;/li&gt;
&lt;li&gt;Docker Desktop 安装最新稳定版&lt;/li&gt;
&lt;li&gt;VirtualBox 安装最新版（大版本号 6 及以上）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VirtualBox 因为换了虚拟化后端，已有的暂停的虚拟机，启动的时候会丢失数据，建议关机之后再迁移&lt;/li&gt;
&lt;li&gt;VirtualBox 的 VM 性能可能会下降，64-bit Guest 尤其严重，32-bit Guest 还好（如果用 Hyper-V 作为后端，可以看到 VM 执行界面右下角是一个乌龟图标）&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>