Victor's Code Journey
Victor's Code Journey

目录

MacOS容器从Docker Desktop到Colima

Colima 轻量、开源、免费 —— 在 Mac 上运行容器的最佳选择

2021年8月,Docker 公司的一纸公告让无数开发者心头一紧:Docker Desktop 将不再免费对企业用户开放。这一政策变化迫使开发者们开始寻找替代方案。正是在这样的背景下,Colima 应运而生。

Colima(Container on Lima)是一个专为 macOS 和 Linux 设计的轻量级容器运行时管理工具,目前在 GitHub 上已获得超过 28.5k 星标,成为了 Docker Desktop 最受欢迎的替代品之一。

在 macOS 上运行 Docker,主要有三个选择:

特性Docker DesktopOrbStackColima
价格免费/商业订阅免费/专业版付费完全免费
开源部分开源闭源完全开源
界面图形界面图形界面纯命令行
资源占用较高
许可证限制企业需付费专业版需付费无限制
  1. 轻量高效:没有臃肿的图形界面,只保留核心功能
  2. 完全开源:代码透明,社区活跃
  3. 跨架构支持:完美支持 Intel 和 Apple Silicon (M1/M2/M3/M4) 芯片
  4. 多运行时支持:Docker、Containerd、Incus
  5. 智能默认配置:开箱即用,无需复杂配置
  6. 自动端口转发:简化网络配置

在开始之前,请确保已安装:

  • Homebrew(macOS 包管理工具)
  • Docker CLI(可选,如果你需要 Docker 运行时)
# 1. 安装 Colima
brew install colima

# 2. 安装 Docker CLI(如果需要 Docker 运行时)
brew install docker

# 3. 安装 Docker Compose(可选)
brew install docker-compose
# 使用默认配置启动
colima start

# 验证安装
docker run hello-world
docker ps
brew services start colima

# 查看服务状态
brew services list

Colima 提供了 template 命令来编辑默认配置:

colima template

这会打开一个 YAML 配置文件,主要配置项包括:

# CPU 核心数
cpu: 8

# 内存大小(GiB)
memory: 10

# 磁盘大小(GiB)
disk: 120

# 运行时选择:docker, containerd, incus
runtime: docker

# 虚拟机类型(vz 使用 macOS 原生虚拟化框架)
vmType: vz

# 挂载类型(virtiofs 是最快的选择)
mountType: virtiofs

# Docker 镜像加速(国内用户必备)
docker:
  registry-mirrors:
    - https://mirror.ccs.tencentyun.com

Colima 支持同时运行多个独立的容器实例:

# 创建自定义实例
colima start --name myproject --cpu 4 --memory 8

# 切换实例
colima stop
colima start --name another-project

# 查看所有实例
colima ls

# 输出示例:
# PROFILE    STATUS     ARCH       CPUS    MEMORY    DISK      RUNTIME
# default    Running    aarch64    8       10GiB     120GiB    docker
# myproject  Running    aarch64    4       8GiB      60GiB     docker

如果你使用的是 Apple Silicon 芯片的 Mac,但需要运行 x86 架构的容器:

# 安装 Rosetta 2(如果尚未安装)
softwareupdate --install-rosetta

# 启动时启用 Rosetta
colima start --arch x86_64

# 或在配置中启用
# rosetta: true
# 启动/停止
colima start
colima stop
colima restart

# 查看状态
colima status
colima ls

# SSH 登录虚拟机
colima ssh

# 编辑配置
colima edit

# 删除实例
colima delete

# 查看帮助
colima --help
colima start --help

Colima 默认会从 GitHub 下载虚拟机镜像,但由于网络限制,国内用户经常下载失败。Colima 支持使用本地自定义镜像来解决这个问题。

Colima 官方镜像仓库提供以下镜像(从 colima-core/releases 下载):

镜像类型架构用途
ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2Apple Silicon (M1/M2/M3/M4)Docker 运行时
ubuntu-24.04-minimal-cloudimg-amd64-docker.qcow2IntelDocker 运行时
ubuntu-24.04-minimal-cloudimg-arm64-containerd.qcow2Apple SiliconContainerd 运行时
ubuntu-24.04-minimal-cloudimg-arm64-incus.qcow2Apple SiliconIncus 运行时
ubuntu-24.04-minimal-cloudimg-arm64-none.qcow2Apple Silicon基础镜像(无预装)
# 1. 手动下载镜像(以 Apple Silicon Docker 镜像为例)
curl -LO https://github.com/abiosoft/colima-core/releases/download/v0.8.1/ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2

# 2. 启动时指定本地镜像
colima start --disk-image ./ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2
# 编辑配置模板
colima template

在 YAML 配置中添加:

# 指定本地镜像路径
diskImage: "/Users/yourname/Downloads/ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2"

# 虚拟机类型
vmType: vz

# 运行时
runtime: docker

对于已创建的实例,可以直接修改配置文件:

# 进入实例配置目录
cd ~/.colima/default

# 编辑 colima.yaml
vim colima.yaml

添加或修改:

# diskImage 配置
diskImage: /Users/yourname/.colima/images/ubuntu-24.04.qcow2

# 其他配置示例
cpu: 8
memory: 16
disk: 200

由于 GitHub 下载速度较慢,可以使用代理或镜像:

# 使用代理下载
export https_proxy=http://127.0.0.1:7890
curl -LO https://github.com/abiosoft/colima-core/releases/download/v0.8.1/ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2

# 或使用 wget
wget https://github.com/abiosoft/colima-core/releases/download/v0.8.1/ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2

建议将镜像统一存放在 Colima 配置目录:

# 创建镜像存放目录
mkdir -p ~/.colima/images

# 移动镜像到该目录
mv ~/Downloads/ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2 ~/.colima/images/

# 修改配置使用该镜像
colima template

配置中指定:

diskImage: ~/.colima/images/ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2
# 启动 Colima
colima start

# 验证虚拟机系统
colima ssh cat /etc/os-release

# 输出示例:
# NAME="Ubuntu"
# VERSION="24.04 LTS (Noble Numbat)"
# ID=ubuntu
# ID_LIKE=debian
# VERSION_ID="24.04"

Q: 镜像下载失败怎么办?

# 检查网络
curl -I https://github.com/abiosoft/colima-core/releases

# 使用国内代理或 Gitee 镜像(如果有)

Q: 如何更换已有实例的镜像?

# 先删除旧实例
colima delete

# 使用新镜像启动
colima start --disk-image /path/to/new-image.qcow2

Q: 镜像版本不兼容?

# 查看 Colima 支持的镜像版本
colima --version

# 下载对应版本的镜像(通常在 releases 页面有标注兼容版本)

Colima 不仅支持 Docker,还支持 Kubernetes:

# 安装 kubectl
brew install kubectl

# 启动带 Kubernetes 的 Colima
colima start --kubernetes

# 验证
kubectl get pods

对于更轻量的容器运行时选择:

# 使用 Containerd
colima start --runtime containerd

# 使用 nerdctl 操作容器
nerdctl run hello-world
nerdctl ps

# 安装 nerdctl 别名脚本
sudo colima nerdctl install

Colima 0.7.0+ 还支持 Incus,可以运行完整的虚拟机:

# 安装 Incus 客户端
brew install incus

# 启动 Incus 运行时
colima start --runtime incus

# 创建虚拟机
incus launch images:ubuntu/22.04 my-vm
incus list

Colima 支持 GPU 加速,非常适合 AI/ML 开发:

# NVIDIA GPU
colima start --runtime docker --gpus ALL

# Apple GPU(M1/M2/M3)
colima start --vm-type vz --vz-rosetta --gpu-override=all

1. Docker 命令不可用

# 确保 Colima 正在运行
colima status

# 重启 Colima
colima restart

2. 镜像下载慢

  • 配置国内镜像加速源(见上方配置示例)
  • 或手动拉取后再使用

3. 端口转发不工作

# 重启 Colima
colima stop
colima start

4. 需要更新 Colima

brew upgrade colima
  1. 安装 Colima(见上方安装步骤)

  2. 迁移配置(可选)

    • Docker Desktop 的设置通常不需要迁移
    • Colima 使用 YAML 配置文件,更易于版本控制
  3. 验证迁移

    # 测试所有常用命令
    docker build -t myapp .
    docker run -d -p 8080:80 myapp
    docker compose up -d
  4. 卸载 Docker Desktop(可选)

    # 如果不再需要
    # 系统偏好设置 → Docker Desktop → Uninstall
  • nerdctl:containerd 的命令行工具
  • lazydocker:终端 UI 工具
  • Dockly:容器管理终端 UI
  • ColimaUi: Colima GUI工具

Colima 为 macOS 开发者提供了一个轻量、高效、免费的容器运行解决方案。它不仅解决了 Docker Desktop 的许可证问题,还通过简洁的命令行界面和智能的默认配置,让容器开发变得更加简单。

无论是个人开发者还是企业团队,Colima 都是一个值得考虑的选择。它证明了开源社区的力量 —— 在商业软件受限的地方,开源项目往往能够提供更好的解决方案。

相关内容