对于我们程序员群体来说,Docker这个容器化虚拟软件几乎是不可或缺的工具。
Docker本质上其实是基于Linux内核及其提供的一些功能实现的,比如Namespace
命令空间, Cgroups
控制组,LXC
Linux容器技术等。所以,Docker这个工具一定是依赖Linux才能运行。
虽然有少部分程序员可能在使用Linux做为桌面主力系统,但相信大多数并不是如此,对桌面系统来说,Windows和MacOS可能才是更主流的选择,所以我们需要更方便的在Windows与MacOS上使用Docker这个工具。
当然, Docker本身提供Docker Desktop For Windows
和Docker Desktop For Mac
来分别支持在Windows上以及MacOS运行和使用Docker。它们都是通过虚拟化技术,在底层虚拟一个Linux来实现的。
但实话实说,个人认为它们并不好用,内存使用高,磁盘占用大,性能表现也不佳,我个人非常不喜欢用这两个玩意。
那是我们是否有其它选择?
当然会有的。这篇文章我就做个大致介绍。我将分别介绍在Windows及MacOS下有哪些替代选择。
Windows & WSL
如果你用的是Windows, 那我推荐你使用WSL。事实上,使用Windows的程序员都应该尝试了解与使用WSL。
WSL全称是Windows Subsystem For Linux. 它可以非常方便的在你的Windows上安装一个Linux子系统,支持带GUI及不带GUI的版本。它支持Ubuntu, Debian, Arch Linux等主流的桌面及服务器版本Linux.
再结合Windows Terminal以及Visual Studio Code中的Remote插件,你几乎可以在Windows上以一种相对完美的方式去运行与使用一个Linux系统。
一方面这样你又享受到了Windows完美的软件生态桌面体验,又能无缝使用Linux,几乎一举两得。以至于行业内流行一句话:Windows才是最好的Linux发行版本
有了WSL支撑的Linux系统,自然在这个Linux中安装一个Docker,也是非常方便的事。它会比你使用Docker Desktop For Windows在各方面都体验更好。
MacOS & Orbstack
如果是MacOS, 除了Docker Desktop For Mac以外,选择其实也非常多。在这里我就介绍两个,第一个就是Orbstack
MacOS其实是Unix系统,并非Linux系统。虽然很多情况下,使用它与使用Linux几乎有非常接近的体验,比如命令行termial, 常用的命令。
但Docker并不属于这个范围内,因为Docker是基于Linux内核的一些技术实现,所以它并不原生支持MacOS, 因此Docker Desktop For Mac也是通过在底层虚拟Linux来实现的。
如果你想在MacOS下寻找更好的方案,Orbstack
是你可以考虑的第一个选项。
Orbstack
是一个商业解决方案,专门为MacOS提供Linux虚拟机支持,有点类似Windows中的WSL。
OrbStack可以帮助你在MacOS上轻松的创建与管理不同的Linux虚拟环境。同时也支持创建Docker环境。(其实就是在一个Linux虚拟机中安装Docker)实现和WSL非常类似。
Orbstack是一个商业解决方案,但对个人使用是免费的。你可以访问https://orbstack.dev/以了解。
MacOS & Lima
前段时间我介绍了Lima这个工具。它是一个完全的开源解决方案。Lima主要是帮助你在MacOS上方便的创建Linux虚拟环境,它会根据你的MacOS的芯片来决定底层是使用Qemu还是Apple原生虚拟化技术。
比如我的M1芯片的MacOS, Lima是用Apple提供的虚拟化技术来虚拟Linux, 性能及各方面表现都非常完美,而且是一个开源的解决方案。
访问这篇我以前写的文章以了解Lima,善用开源,MacOS下绝佳的Linux虚拟化工具 - Lima
Lima和Orbstack的主要区别在于:
- Lima是开源的,Orbstack是商业
- Lima是一个纯SHELL工具(无GUI),Orbstack同时支持GUI及Shell命令操作。
所以,如果你喜好开源,又不介意只用Shell命令来做这些事,我认为选择Lima是更好的选择。
最后
使用上述解决方案,比如Lima。相比使用Docker Desktop For Mac来说,有明显的优势,表现在:
- 无缝体验,直接在MacOS就能使用docker命令,和在Linux上的使用体验几乎完全一样。
- 性能表现更好。我一般限制Lima运行docker环境的虚拟环境,2GB内存,20GB硬盘空间。大多数情况下足够使用,有需要随时修改这些限制
- 空间占用更少。而且可以随时撤销与重建,不再担心磁盘占用问题。
- 开源的解决方案,更可靠。
如果是MacOS,选择Orbstack可能更省事,还有直观的UI支持。选择Lima则更没有License,是否商业支持等这方面的担忧。我个人偏好开源的选择,所以当然选择Lima。
后面我再详细介绍如何在MacOS上结合Lima搭建一个支持Docker工具的环境。