在 macOS 上跑容器,常见选择是 Docker Desktop 或 OrbStack。若更在意开源、CLI 可控、不用时关掉 VM,Colima 通过 Lima 起 Linux 虚拟机,在 VM 里跑 Docker,本机仍用 docker / docker compose。
Colima 与 OrbStack、Docker Desktop 不要同时开;切换前退出其它引擎,再 docker context use colima。
安装与启动
brew install colima docker docker-compose
colima start --dns 114.114.114.114 --dns 1.1.1.1
# 资源不够时:colima start --cpu 4 --memory 8 --dns 114.114.114.114 --dns 1.1.1.1
colima start 默认后台运行;配置落在 ~/.colima/default/colima.yaml,改过的 flags 会持久化。
Profile
Profile 是实例名:每个 profile 有独立 VM、目录 ~/.colima/<名字>/ 和 Docker socket。不写名字时用 default。
colima start dev --cpu 2 --memory 4
colima start heavy --cpu 8 --memory 16
colima list
docker context use colima-dev # 以 docker context ls 为准
colima stop dev
多套可同时运行;换项目切 docker context。
日常
colima status | stop | ssh
docker context use colima
docker compose up -d
docker run --rm hello-world
切回 OrbStack:colima stop → docker context use orbstack。
Colima 偏开源与脚本化;OrbStack 偏 GUI 与 Mac 集成。二者留一个即可。
DNS:[::1]:53 connection refused
拉镜像若报 lookup registry-1.docker.io on [::1]:53 ... connection refused,是 VM 内 DNS 指向坏的 systemd stub。在 ~/.colima/default/colima.yaml(或对应 profile 目录)加上:
network:
dns:
- 114.114.114.114
- 1.1.1.1
provision:
- mode: after-boot
script: |
if [ -L /etc/resolv.conf ] && [ ! -e /etc/resolv.conf ]; then
rm -f /etc/resolv.conf
printf 'nameserver 114.114.114.114\nnameserver 1.1.1.1\noptions edns0\n' > /etc/resolv.conf
fi
然后 colima stop && colima start(或 colima start --dns 114.114.114.114 --dns 1.1.1.1)。用 docker run --rm hello-world 验证。
其它
- 连不上 daemon:
colima start+docker context use colima - 仍走 OrbStack:
docker context ls后切换 - 拉取慢:检查本机代理是否对 VM 可达(Colima 常把
127.0.0.1:7890映射到网关)