Nếu bạn đang dùng Docker Desktop trên macOS và bực bội với RAM bị ngốn, quạt kêu ầm ĩ hay lo ngại về chi phí licensing – Colima là lựa chọn miễn phí, mã nguồn mở đáng thử ngay hôm nay.

Câu chuyện bắt đầu: Khi Docker Desktop trở thành gánh nặng

Một thời gian dài, Docker Desktop là mặc định cho hầu hết mọi developer. Cần database? docker run là có. Cần môi trường nhất quán cho cả team? docker-compose giải quyết hết. Mọi thứ nghe thật hoàn hảo.

Nhưng theo thời gian, đặc biệt trong môi trường local development, Docker Desktop bắt đầu gây ra nhiều rắc rối hơn giá trị nó mang lại:

  • Ngốn tài nguyên: Chạy nhiều container cùng lúc – app server, database, cache, message broker – khiến quạt Mac quay như động cơ phản lực và pin cạn trong nháy mắt.
  • File sync chậm kinh khủng: Volume mount trên macOS có hiệu suất I/O tệ đến mức đau đớn. Đợi vài giây sau mỗi lần sửa code nghe vô hại, nhưng cộng dồn hàng trăm lần mỗi ngày thì không thể chấp nhận được.
  • Debug phức tạp hơn: Gắn debugger, kiểm tra log, theo dõi performance bên trong container đều cần thêm nhiều bước so với chạy ứng dụng trực tiếp.
  • Vấn đề licensing: Từ năm 2022, Docker Desktop yêu cầu trả phí $9–24/người/tháng đối với doanh nghiệp có trên 250 nhân viên hoặc doanh thu trên $10M.

Chính những bất cập này đã thúc đẩy cộng đồng developer tìm kiếm giải pháp thay thế. Và Colima nổi lên như một trong những lựa chọn sáng giá nhất.


Colima là gì?

Colima (viết tắt của Containers on Lima) là một container runtime mã nguồn mở, hoàn toàn miễn phí, được thiết kế đặc biệt cho macOS và Linux. Dự án được phát triển bởi Abiosoft với triết lý "minimal setup, maximum flexibility".

Về mặt kỹ thuật, Colima xây dựng trên nền tảng phân lớp thông minh:

  • Lima (Linux on Mac): Cung cấp Linux VM trên macOS với file sharing và port forwarding tự động.
  • QEMU / VZ (Virtualization Framework): Engine ảo hóa – QEMU cho tính tương thích rộng, VZ cho hiệu suất cao trên macOS 13+.
  • Container Runtime: Hỗ trợ Docker (mặc định), containerd, hoặc Incus.

Toàn bộ phần mềm chỉ nặng khoảng ~50MB so với hơn 500MB của Docker Desktop.


Tại sao nên dùng Colima?

1. Hoàn toàn miễn phí, mã nguồn mở (MIT License)

Không có bất kỳ phí licensing nào – cho cá nhân, startup hay doanh nghiệp lớn. Đây là điểm khác biệt cốt lõi so với Docker Desktop và cả OrbStack ($8/người/tháng cho enterprise).

2. Hiệu suất tốt hơn Docker Desktop

Benchmark thực tế cho thấy:

  • File read (1M random reads): Colima đạt ~729 reads/ms, trong khi Docker Desktop chỉ đạt ~13 reads/ms – chậm hơn 50 lần!
  • Build performance: Colima nhanh hơn Docker Desktop đáng kể trong các tác vụ I/O và CPU-intensive.
  • Memory: Dynamic allocation, giải phóng khi không dùng – không "giữ" RAM tĩnh như Docker Desktop.

3. Hỗ trợ đa runtime

Colima là công cụ duy nhất trong nhóm này hỗ trợ nhiều container runtimes: Docker, containerd (Kubernetes-native), và Incus (containers + VMs).

4. Multiple instances với Profiles

Tạo và quản lý nhiều môi trường độc lập: một instance ARM64 cho development, một instance x86 với Rosetta cho legacy apps, một instance riêng chạy Kubernetes.

5. Tối ưu cho Apple Silicon

Hỗ trợ Rosetta 2 trên chip M1/M2/M3/M4, cho phép emulate x86 với hiệu suất gần native – lý tưởng khi làm việc với các image cũ chưa có bản ARM64.

6. Cross-platform

Chạy trên cả macOS và Linux, phù hợp cho team hybrid.


Chuẩn bị: Dọn sạch Docker Desktop

Nếu đang gỡ Docker Desktop để chuyển sang Colima, chỉ uninstall thôi là chưa đủ – còn rất nhiều file cache nằm rải rác trong hệ thống. Script dưới đây sẽ dọn sạch tất cả:

#!/bin/bash

paths=(
    "~/Library/Cookies/com.docker.docker.binarycookies"
    "~/Library/Logs/Docker Desktop"
    "~/Library/Application Support/Docker Desktop"
    "~/Library/Caches/com.docker.docker"
    "~/Library/Group Containers/group.com.docker"
    "~/Library/Saved Application State/com.electron.docker-frontend.savedState"
    "/Library/PrivilegedHelperTools/com.docker.vmnetd"
    "/Library/LaunchDaemons/com.docker.vmnetd.plist"
    "/usr/local/lib/docker"
    "~/.docker"
)

for path in "${paths[@]}"; do
    eval rm -rf $path
    echo "Deleted: $path"
done

echo "DONE."
⚠️ Lưu ý: Script trên sẽ xóa toàn bộ containers, images và volumes của Docker Desktop. Hãy backup những gì cần thiết trước khi chạy.

Cài đặt Colima

Yêu cầu

  • macOS (Intel hoặc Apple Silicon)
  • Homebrew đã cài đặt

Bước 1: Cài QEMU và Lima (core dependencies)

Thay vì cài Colima trực tiếp, tốt hơn nên cài riêng từng dependency trước để dễ debug nếu có lỗi xảy ra. QEMU là công cụ ảo hóa phần cứng để chạy container trên nhiều kiến trúc processor. Lima là lớp trên QEMU, cho phép chạy Linux VM trên macOS – chính là nền tảng mà Colima xây dựng trên đó.

brew install qemu
brew install lima

Bước 2: Cài Docker Client và Colima

Lưu ý quan trọng: Docker EngineDocker Client là hai thứ khác nhau. Colima đóng vai trò Docker Engine, còn brew install docker chỉ cài Docker CLI để tương tác với engine.

# Chỉ cài Docker CLI (không phải Docker Desktop)
brew install docker

# Cài Colima
brew install colima

Bước 3: Cài Docker Compose plugin (đúng cách)

Docker plugins cần được cài theo đúng chuẩn của Docker CLI – không phải qua brew. Cách đúng là download binary và đặt vào thư mục cli-plugins:

# Tạo thư mục plugins
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins

# Download docker-compose (kiểm tra phiên bản mới nhất tại github.com/docker/compose/releases)
# Với Apple Silicon (ARM64):
curl -SL https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-darwin-aarch64 \
  -o $DOCKER_CONFIG/cli-plugins/docker-compose

# Cấp quyền thực thi
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

# Kiểm tra
docker compose version

Bước 4: Cài Docker Buildx plugin

# Download buildx (kiểm tra phiên bản mới nhất tại github.com/docker/buildx/releases)
# Với Apple Silicon (ARM64):
curl -SL https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-arm64 \
  -o $DOCKER_CONFIG/cli-plugins/docker-buildx

chmod +x $DOCKER_CONFIG/cli-plugins/docker-buildx

# Đặt Buildx làm builder mặc định
docker buildx install

Sử dụng Colima

Khởi động cơ bản

colima start

Lần đầu chạy, Colima sẽ download và cấu hình VM với mặc định: 2 CPU, 2GB RAM, 60GB disk, Docker runtime. Chờ khoảng 15–30 giây là xong.

Chạy Colima như một service (auto-start khi login)

Muốn Colima tự khởi động mỗi khi đăng nhập macOS mà không cần gõ lệnh thủ công:

# Đăng ký Colima như a launchd service
brew services start colima

# Dừng service
brew services stop colima

# Kiểm tra trạng thái
brew services list

Cấu hình lần đầu với --edit

Hãy dừng lại và cấu hình theo nhu cầu thực tế. Đặc biệt, nên bật network.address: true để Colima được cấp IP riêng – quan trọng khi nhiều container cần giao tiếp với nhau:

colima stop
colima start --edit

Trong file YAML, tìm phần network và bật lên:

network:
  address: true   # Gán IP reachable cho VM
  dns: [8.8.8.8, 1.1.1.1]

Tùy chỉnh tài nguyên

# 4 CPU, 8GB RAM, 100GB disk
colima start --cpu 4 --memory 8 --disk 100

Cấu hình tối ưu cho Apple Silicon (khuyến nghị)

# Cài Rosetta nếu chưa có
softwareupdate --install-rosetta

# Khởi động với VZ + Rosetta + VirtioFS (hiệu suất cao nhất)
colima start \
  --cpu 4 \
  --memory 8 \
  --vm-type=vz \
  --vz-rosetta \
  --mount-type=virtiofs

Kiểm tra trạng thái

colima status
docker version
docker info

Chạy container đầu tiên

# Kiểm tra Docker hoạt động
docker run hello-world

# Chạy Nginx
docker run -p 8080:80 nginx:latest
# Truy cập http://localhost:8080

Dừng và xóa VM

colima stop      # Dừng VM, giữ dữ liệu
colima delete    # Xóa hoàn toàn VM

Quản lý nhiều môi trường với Profiles

Đây là tính năng mạnh nhất của Colima so với các đối thủ.

# Profile cho development ARM64
colima start --profile dev --cpu 4 --memory 6 --arch aarch64

# Profile cho legacy x86 apps
colima start --profile legacy \
  --cpu 2 --memory 4 \
  --arch aarch64 \
  --vm-type=vz --vz-rosetta

# Profile riêng cho Kubernetes
colima start --profile k8s --cpu 4 --memory 8 --kubernetes

# Liệt kê tất cả instances
colima list

# Chuyển đổi Docker context
docker context use colima-dev
docker context use colima-legacy

# Dừng một profile cụ thể
colima stop --profile legacy

Tích hợp Kubernetes

# Cài kubectl
brew install kubectl

# Khởi động Colima với K3s
colima start --kubernetes

# Kiểm tra cluster
kubectl cluster-info
kubectl get nodes

Nếu cần custom version hoặc Kubernetes ingress:

colima start \
  --kubernetes \
  --kubernetes-version v1.28.3+k3s2 \
  --kubernetes-ingress

Cấu hình nâng cao

Chạy colima start --edit để mở file YAML cấu hình chi tiết:

# Tài nguyên
cpu: 4
memory: 8
disk: 100

# VM type và kiến trúc
vmType: vz        # vz (nhanh) hoặc qemu (tương thích rộng)
arch: aarch64
rosetta: true     # Bật Rosetta 2 cho x86 emulation

# Mount type
mountType: virtiofs  # virtiofs (nhanh nhất), 9p, hoặc sshfs

# Mạng
network:
  address: true
  dns: [8.8.8.8, 1.1.1.1]

# Docker daemon config
docker:
  features:
    buildkit: true
  insecure-registries:
    - localhost:5000

# Volumes tùy chỉnh
mounts:
  - location: /Users/username/Projects
    writable: true

Xử lý lỗi thường gặp

Colima không khởi động:

colima delete
colima start --verbose

Docker daemon không kết nối được:

docker context ls
docker context use colima
colima restart

Hiệu suất kém trên Apple Silicon:

# Đảm bảo dùng VZ + Rosetta thay vì QEMU
colima delete
colima start --vm-type=vz --vz-rosetta --mount-type=virtiofs

File sharing chậm:

# VirtioFS cho VZ (nhanh nhất)
colima start --vm-type=vz --mount-type=virtiofs

# Hoặc 9p cho QEMU
colima start --mount-type=9p

Tích hợp Testcontainers (Java / Spring Boot)

Nếu bạn dùng Testcontainers trong project Java/Spring Boot, sẽ gặp lỗi ngay khi chạy integration test lần đầu với Colima:

Could not find a valid Docker environment.
Please check your Docker configuration (docker.sock not found at /var/run/docker.sock)

Nguyên nhân là Testcontainers tìm Docker socket ở đường dẫn mặc định /var/run/docker.sock, trong khi Colima đặt socket ở vị trí khác. Fix rất đơn giản – export 2 biến môi trường này vào ~/.zshenv hoặc ~/.bashrc:

export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
export DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock"

# Áp dụng ngay (với ZSH)
source ~/.zshenv
💡 Nếu dùng nhiều Colima profiles: Thay default trong đường dẫn socket bằng tên profile tương ứng. Ví dụ với profile dev: unix://${HOME}/.colima/dev/docker.sock

Xử lý lỗi BuildKit với multi-stage Dockerfile

Khi build image có multi-stage Dockerfile, bạn có thể gặp lỗi lệnh COPY --from không hoạt động đúng. Đây là hành vi của BuildKit: nó chỉ build các stage mà target stage phụ thuộc trực tiếp, bỏ qua các intermediate stage "không liên quan".

Giải pháp là đảm bảo Buildx được set làm default builder (đã cài ở bước cài đặt):

# Đặt Buildx làm builder mặc định
docker buildx install

# Kiểm tra builder hiện tại
docker buildx ls

# Build image (deprecation warning sẽ biến mất)
docker build -t my-app:latest .

Sau khi chạy docker buildx install, lệnh docker build sẽ tự động dùng Buildx, loại bỏ cả cảnh báo "legacy builder deprecated" lẫn lỗi COPY trong multi-stage builds.


So sánh: Colima vs OrbStack vs Docker Desktop

Tiêu chí Colima OrbStack Docker Desktop
Giá (cá nhân) Miễn phí Miễn phí Miễn phí
Giá (doanh nghiệp) Miễn phí $8/người/tháng $9–24/người/tháng
License MIT (Open Source) Proprietary Proprietary
Thời gian khởi động 15–30 giây ~2 giây 20–60 giây
CPU idle Thấp (~2–5%) Rất thấp (~0.1%) Cao (2–8%)
File I/O Tốt (VZ+VirtioFS) Xuất sắc Chậm (osxfs)
GUI ❌ CLI only ✅ Native app ✅ Electron app
Dung lượng cài đặt ~50MB ~10MB >500MB
Multiple runtimes ✅ Docker/containerd/Incus ❌ Docker only ❌ Docker only
Multiple instances ✅ Profiles
Kubernetes ✅ K3s ✅ K3s
Apple Silicon ✅ VZ+Rosetta
HTTPS tự động ✅ Zero-config
Linux VMs
Hỗ trợ Linux
Hỗ trợ Windows

Khi nào Colima là lựa chọn tốt nhất?

Chọn Colima khi:

  • Chi phí là yếu tố quan trọng (cá nhân, startup, doanh nghiệp lớn cần tránh licensing)
  • Cần multiple runtimes hoặc multiple instances với cấu hình khác nhau
  • Làm việc chủ yếu với CLI và automation / CI/CD
  • Team phát triển cross-platform (macOS + Linux)
  • Muốn customization sâu và kiểm soát fine-grained
  • Làm việc nhiều với Kubernetes và cần K3s nhẹ

Chọn OrbStack khi:

  • Cần hiệu suất cao nhất và khởi động nhanh nhất
  • Muốn GUI native, UX mượt mà không cần config
  • Cần HTTPS và domain tự động (*.orb.local) cho web development
  • Sẵn sàng trả $8/tháng cho enterprise

Chọn Docker Desktop khi:

  • Team đa nền tảng (Windows + macOS + Linux)
  • Cần Docker Extensions và ecosystem đầy đủ
  • Yêu cầu enterprise support chính thức
  • Workflow đã tích hợp sâu với Docker Desktop

Những hạn chế cần biết

Colima không hoàn hảo. Trước khi chuyển sang, bạn nên lưu ý:

  • Không có GUI – 100% CLI, có thể khó khăn nếu bạn quen với giao diện đồ họa
  • Không hỗ trợ Windows – chỉ dành cho macOS và Linux
  • Không có automatic HTTPS hay domain names như OrbStack
  • Project tương đối mới (ra mắt 2021) – chưa mature bằng Docker Desktop
  • Đôi khi gặp stability issues, đặc biệt trên Intel Mac cũ
  • Documentation chủ yếu là README và GitHub Issues – không có docs chuyên nghiệp như Docker

Kết luận

Colima là lựa chọn xuất sắc nếu bạn tìm kiếm một container runtime miễn phí hoàn toàn, linh hoạt và đủ mạnh cho môi trường macOS. Với triết lý minimal setup, hiệu suất file I/O vượt trội so với Docker Desktop, hỗ trợ multiple runtimes và Profiles, Colima xứng đáng là công cụ hàng đầu cho developer muốn thoát khỏi Docker Desktop mà không tốn đồng nào.

Tuy nhiên, nếu bạn cần GUI đẹp, zero-config HTTPS, hay hiệu suất tuyệt đối – OrbStack có thể là lựa chọn phù hợp hơn dù phải trả phí. Còn nếu team bạn có cả Windows developer, Docker Desktop vẫn là lựa chọn an toàn nhất.

Điều quan trọng nhất: không có công cụ nào là tốt hay xấu tuyệt đối – chỉ có phù hợp hay không phù hợp với nhu cầu của bạn. Hãy thử Colima, cảm nhận sự khác biệt, và quyết định dựa trên workflow thực tế của mình.

# Bắt đầu ngay với 3 lệnh
brew install colima docker
colima start --cpu 4 --memory 8 --vm-type=vz --vz-rosetta
docker run hello-world