本机要跑 Linux 容器,公司那边又不让装 Docker Desktop。需要的是一套能在这台 Mac 上把运行时拉起来的官方方案,不是去绕过桌面版的许可证,也不是去改它的安装包。
abiosoft/colima 的 README 把项目写成:在 macOS(也支持 Linux)上,用尽量少的配置来跑容器运行时。项目目标也写在同一页:在 macOS 上提供容器运行时,并把准备工作尽量压到最少。名字来自 Containers on Lima。Lima 本身又常被说成 Linux Machines,所以也可以理解成在 Linux 虚拟机里跑容器。它支持 Intel 和 Apple Silicon 的 macOS,也支持 Linux。README 还把自动端口转发、卷挂载、多实例,以及多种容器运行时列成特性,并且写了简单的命令行接口和比较合理的默认值。装好之后并不会自动进入运行状态,需要自己执行启动命令,才会拉起那台用来跑容器的虚拟机。站内这篇 Podman 和 Docker 的易混点 说的是引擎和 daemon 的心智,这篇 Compose 文件名与命令 说的是编排文件和命令怎么写,都和在 Mac 上把容器环境拉起来不是同一层。Colima 解决的是这台 Mac 上的运行时从哪里来:先有虚拟机和运行时,再谈用哪个客户端去跑镜像、怎么写编排文件。
安装方面,README 列了 Homebrew、MacPorts、Nix 和 Mise。Homebrew 是 brew install colima,MacPorts 是 sudo port install colima,Nix 是 nix-env -iA nixpkgs.colima,Mise 是 mise use -g colima@latest。如果只想跟开发分支,Homebrew 还可以 brew install --HEAD colima,README 注明这条只适用于 Homebrew。
拉起默认环境,用的是 colima start。更多选项看 colima --help 和 colima start --help,也可以 colima start --edit 打开配置再启动。初始启动时可以指定运行时,不写则默认是 Docker。要用 Docker 运行时,本机还得另外装 Docker 客户端,这和安装桌面版不是一回事。README 写的是 brew install docker。colima start 之后,就可以在 macOS 上直接用 docker 客户端,不必再做额外设置,官方示例是 docker run hello-world 和 docker ps。日常敲的还是熟悉的 docker 命令,只是后面的引擎改由 Colima 拉起的那台 Linux 虚拟机来提供。
也可以换成别的运行时。colima start --runtime containerd 会装好 Containerd,之后用 colima nerdctl 跟它交互。官方建议再执行 colima nerdctl install,把 nerdctl 的别名脚本装进 PATH。官方示例是 nerdctl run hello-world 和 nerdctl ps。若要启用 Kubernetes,需要先装 kubectl(README 写的是 brew install kubectl),启动时加上 --kubernetes,官方示例是 kubectl run caddy --image=caddy 和 kubectl get pods。文档还补充:Docker 运行时下,用 Docker 构建或拉取的镜像,Kubernetes 可以直接用。Containerd 运行时下,则是在 k8s.io 命名空间里构建或拉取的镜像,才对 Kubernetes 可见。Incus 运行时是 colima start --runtime incus,本机需要 incus 客户端,README 写的是 brew install incus。colima start 之后即可在 macOS 上直接使用,官方示例是 incus launch images:alpine/edge 和 incus list。其中在 Incus 上跑虚拟机,官方注明只在 M3 或更新的 Apple Silicon 设备上受支持。这些都写在 README 的运行时说明里,按自己的环境选即可,不是必须一次全开。
默认虚拟机是 2 个 CPU、2GiB 内存、100GiB 磁盘。如果默认规格不合适,按 README 的办法改。创建时可以把 --cpu、--memory、--disk、--runtime 传给 colima start,也可以走 colima start --edit。官方举过两个例子:colima start --cpu 1 --memory 2 --disk 10 会按 1 个 CPU、2GiB 内存、10GiB 磁盘来建。要改已经建好的虚拟机,则是先 colima stop,再例如 colima start --cpu 4 --memory 8。磁盘可以在虚拟机创建之后再加大。日常停掉环境,用的也是同一条 colima stop。停掉之后若要重新使用,再执行 colima start 即可。若同时还要改 CPU 或内存,把新的参数带在这一次启动命令上,和 README 的修改示例一样。Apple Silicon 上如果还需要用 Rosetta 2 做模拟,README 写了 colima start --vm-type=vz --vz-rosetta,并注明需要 v0.5.3 以及 macOS 13(Ventura)或更新版本。多实例也是官方列出的能力,具体参数看 colima start --help。
这样就能在不装 Docker Desktop 的前提下,在 Mac 上把 Linux 容器跑起来。你那边是准备用默认的 Docker 运行时,还是一开始就要上 containerd?