环境:系统macOS13,芯片M1Pro,内存16GB
在mac环境中运行docker,则会出现内存占用过高的情况,如下图:
具体原因如下所介绍:
也就是说,docker是无法直接运行在macOS中的,虽然它们都是类unix的。故而我猜测在每次运行一个container容器时,可能都会创建一个虚拟的Linux环境,导致内存占用过高。
既然问题已经出现,总要想办法解决。我的思路是创建一个Linux虚拟机,在这个虚拟机里面跑docker。也就是说不要直接在macOS中使用docker,而是找一个“替身”虚拟机跑docker。
这里介绍一下ubuntu家新出的一个工具:multipass。在我观察下来它似乎也是一个类似于docker一样的虚拟容器,但是好处是运行起来十分方便。本人之前也试过使用vmware创建centos虚拟机和使用docker直接创建一个centos容器,但是这两者都有各自的缺点:vmware fusion是预览版,不定时收费,同时centos7这个经典版有些地方不支持m1的芯片,同时centos stream也开始出现了,所以迟迟的在犹豫;docker运行centos容器的操作是很骚,但是一来会同样的遇到内存问题,二是会出现权限的错误(具体记不太清楚了,总之就是进入容器后甚至无法使用systemctl这个命令,试了很久也没解决,后来发现是官方的一个问题,弃)。
总之是兜兜转转换到了ubuntu。而ubuntu最近一直在推他们家的multipass,于是就去试用了一下,不得不说体验感非常好,两分钟就运行起来了一个虚拟机。官网在这里:Multipass orchestrates virtual Ubuntu instances
当运行起来之后,就按照正常的Linux安装docker的方式去做就可以了。附上现在的运行图
运行了四个容器: