我的家庭实验室跑在容器上,其中大多数是Proxmox上的LXC,但我在测试时也会用Docker Desktop。我一直不喜欢这个程序,但它是必要的恶。因此,当微软在最新的WSL预发布版中推出WSL容器(wslc)时,我必须弄清楚我能否永远抛弃Docker Desktop。
我原本期待一场速度测试,并且预计微软会在实现必要功能时笨手笨脚。但我发现的是一堂关于如何以不同方式做事的架构课。Wslc为每个容器构建一个新的私有虚拟机,而Docker Desktop则生活在WSL的共享虚拟机内部。这使得它非常适合开发工作,但对于长期运行的家庭实验室服务来说,它还不太够格。
每个wslc会话都是自己的虚拟机,只是没人告诉你它何时在运行。
我先寻找Docker Desktop的RAM占用情况,因为它总是让我感觉像在偷偷抽走资源。确实有什么在占用资源,但不是这个应用——它空闲时不到200MB,包括特权Windows服务。Hyper-V的诊断工具显示Docker引擎作为一个发行版运行在我共享的WSL实用虚拟机中,和我的Ubuntu安装在一起。而运行一个wslc容器会创建一个以你的用户账户命名的新虚拟机,大约使用1.5GB RAM。
现在,这是预览软件,所以当某些东西不能正常工作时,我不应该太惊讶。微软说这些容器应该在你用完后消失。容器确实消失了。但那个扣着你RAM不放的虚拟机并没有消失,即使手动关闭WSL也能存活。唯一的修复方法是wslc system session terminate,这个命令在CLI里埋了三层深。它管用,但没有任何wslc命令会一开始就告诉你这么做。
这还不是唯一的怪事。启动一个wslc容器也启动了一份全新的共享WSL虚拟机,并把我的Ubuntu发行版重新注册为运行中。这样,一个空闲提示就总共吃掉了3.4GB RAM。
“在Windows上原生运行Linux,现在有了能用的OCI容器”——这是微软的宣传语,但实际体验告诉我,wslc还处于起步阶段。如果你只是想在开发时快速隔离环境,它值得一试;但如果你想用它取代Docker Desktop来跑家庭服务,最好再等等。
热门跟贴