macOS Docker Desktop Alternatives: Colima, Podman, and Rancher
Docker Desktop has long been the default way to run containers on macOS, but it is not the only option. With changes to Docker's licensing model for larger organizations, increased resource consumption, and a desire for more lightweight tooling, many developers are exploring alternatives. This tutorial covers three popular Docker Desktop alternatives on macOS: Colima, Podman, and Rancher Desktop. We will explore what each tool is, why it matters, how to install and use it, and best practices for getting the most out of your container workflow.
Why Look Beyond Docker Desktop?
Docker Desktop bundles the Docker Engine, Docker CLI, Compose, Kubernetes support, and a GUI into a single macOS application. It is convenient, but it comes with trade-offs:
- Licensing: Docker Desktop requires a paid subscription for companies with more than 250 employees or $10 million in annual revenue.
- Resource usage: The Docker Desktop VM can be heavy on CPU and memory, even when idle.
- Closed source: The Docker Desktop GUI and VM management layer are proprietary.
- Flexibility: Some teams prefer tools that integrate with broader ecosystems like Kubernetes or rootless container runtimes.
The alternatives below address these concerns while still providing a familiar container development experience on macOS.
Colima: Lightweight Docker Runtime on macOS
What Is Colima?
Colima is an open-source, lightweight container runtime for macOS and Linux. It provides a minimal Linux VM (based on Lima) that runs Docker or containerd, exposing the same Docker API you already use. Because Colima is CLI-driven and has no GUI, it consumes far fewer resources than Docker Desktop while remaining fully compatible with the docker command-line tool and Docker Compose.
Why Colima Matters
Colima matters because it offers a near drop-in replacement for Docker Desktop's core functionality without the licensing cost or GUI overhead. It supports Docker Compose, Kubernetes (single-node), and even rootless mode. If your workflow is CLI-centric and you want a fast, minimal runtime, Colima is an excellent choice.
Installing Colima
The easiest way to install Colima on macOS is via Homebrew. You will also need the Docker CLI client and Docker Compose plugin.
# Install Colima, Docker CLI, and Compose plugin
brew install colima docker docker-compose
# Start Colima with default settings (2 CPU, 2GB RAM)
colima start
# Verify the Docker CLI works
docker info
docker run --rm hello-world
Configuring Colima
Colima supports several profiles and runtime options. You can customize CPU, memory, disk size, and even enable Kubernetes.
# Start Colima with 4 CPUs, 8GB RAM, and 60GB disk
colima start --cpu 4 --memory 8 --disk 60
# Enable Kubernetes support
colima start --kubernetes
# Use containerd runtime instead of Docker
colima start --runtime containerd
# Stop and delete the VM
colima stop
colima delete
Using Docker Compose with Colima
Because Colima exposes the standard Docker API, Docker Compose works without modification.
# Create a simple docker-compose.yml
cat <<'EOF' > docker-compose.yml
services:
web:
image: nginx:alpine
ports:
- "8080:80"
redis:
image: redis:alpine
EOF
# Launch the stack
docker compose up -d
# Check running containers
docker compose ps
# Tear down
docker compose down
Colima Best Practices
- Use separate profiles for different projects:
colima start --profile project-a. - Allocate resources based on actual need to avoid wasting memory.
- Use
colima restartafter changing configuration rather than recreating the VM. - Enable
--mount-type virtiofsfor better file system performance on macOS.
Podman: Daemonless, Rootless Containers
What Is Podman?
Podman is an open-source container engine developed by Red Hat. Unlike Docker, Podman is daemonless and rootless by default. Each container is a child process of the user who started it, which improves security and reduces the attack surface. Podman also introduces the concept of "pods," groups of containers that share networking and resources, mirroring Kubernetes primitives.
Why Podman Matters
Podman matters for developers who care about security, want a closer alignment with Kubernetes, or prefer a fully open-source tool. Podman can alias the docker command, making migration straightforward. It also supports rootless containers out of the box, which is a significant security improvement over Docker's traditional daemon model.
Installing Podman on macOS
On macOS, Podman runs containers inside a Linux VM managed by Podman Machine. Install it via Homebrew:
# Install Podman
brew install podman
# Initialize the default machine
podman machine init
# Start the machine
podman machine start
# Verify
podman info
podman run --rm hello-world
Using Podman as a Docker Replacement
Podman's CLI is designed to be compatible with Docker. You can create an alias so existing scripts continue to work.
# Add alias to your shell profile (~/.zshrc or ~/.bash_profile)
echo 'alias docker="podman"' >> ~/.zshrc
source ~/.zshrc
# Now docker commands route to Podman
docker ps
docker images
docker run --rm alpine echo "Hello from Podman"
Working with Pods
Pods are a powerful feature that groups containers together, similar to Kubernetes pods. This is useful when you want to test multi-container applications locally before deploying to Kubernetes.
# Create a new pod with a published port
podman pod create --name mypod -p 8080:80
# Add a web server container to the pod
podman run -d --pod mypod --name web nginx:alpine
# Add a sidecar container to the same pod
podman run -d --pod mypod --name sidecar alpine sleep 3600
# List pods and their containers
podman pod ps
podman ps --pod
# Clean up
podman pod rm -f mypod
Generating Kubernetes YAML from Podman
One of Podman's standout features is the ability to export running containers as Kubernetes manifests.
# Run a container
podman run -d --name myapp -p 8080:80 nginx:alpine
# Generate Kubernetes YAML
podman generate kube myapp > myapp.yaml
# Later, deploy using Kubernetes
kubectl apply -f myapp.yaml
# Clean up the local container
podman rm -f myapp
Podman Best Practices
- Run containers rootless whenever possible for better security isolation.
- Use
podman compose(via podman-compose or the built-in support) for Docker Compose workflows. - Leverage
podman generate kubeto bridge local development and Kubernetes deployment. - Regularly update Podman and the machine image with
podman machine stop,brew upgrade podman, andpodman machine initif needed.
Rancher Desktop: Kubernetes-First Container Environment
What Is Rancher Desktop?
Rancher Desktop is an open-source application that provides container management and Kubernetes on macOS, Windows, and Linux. It is built by SUSE and the Rancher team. Unlike Colima and Podman, Rancher Desktop ships with a GUI and focuses on providing a local Kubernetes cluster (via k3s) alongside a container runtime. You can choose between the moby runtime (Docker-compatible) or containerd.
Why Rancher Desktop Matters
Rancher Desktop matters for developers who need Kubernetes as part of their local workflow. It combines the convenience of a GUI with the power of k3s, a lightweight Kubernetes distribution. It is fully open-source, free for all use cases, and integrates well with the broader Rancher ecosystem. If you regularly test Helm charts, operators, or multi-service Kubernetes apps locally, Rancher Desktop is a compelling option.
Installing Rancher Desktop
You can install Rancher Desktop via Homebrew Cask or by downloading the installer directly from the project's GitHub releases.
# Install via Homebrew Cask
brew install --cask rancher
# Launch the application
open -a Rancher\ Desktop
On first launch, you will choose a container runtime (moby for Docker compatibility or containerd for nerdctl). You can also select a Kubernetes version or disable Kubernetes entirely if you only need containers.
Using Rancher Desktop with Docker CLI
If you select the moby runtime, the standard Docker CLI works out of the box.
# Verify Docker compatibility
docker info
docker run --rm hello-world
# Run a multi-container app
docker compose up -d
docker compose ps
docker compose down
Using Kubernetes with Rancher Desktop
Rancher Desktop includes k3s, so you can immediately interact with Kubernetes using kubectl.
# Check cluster nodes
kubectl get nodes
# Deploy a sample application
kubectl create deployment nginx --image=nginx:alpine
kubectl expose deployment nginx --port=80 --type=LoadBalancer
# Check resources
kubectl get pods
kubectl get svc
# Forward the service port locally
kubectl port-forward svc/nginx 8080:80
# Clean up
kubectl delete svc nginx
kubectl delete deployment nginx
Working with Helm
Rancher Desktop pairs naturally with Helm for package management on Kubernetes.
# Install Helm if not present
brew install helm
# Add a popular chart repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# Install Redis
helm install my-redis bitnami/redis
# Verify
kubectl get pods
# Uninstall
helm uninstall my-redis
Rancher Desktop Best Practices
- Disable Kubernetes in settings if you only need containers to save resources.
- Use the
containerdruntime withnerdctlif you want a more Kubernetes-native experience. - Adjust CPU and memory limits in the GUI based on your workload.
- Use Rancher Desktop's built-in image management to prune unused images and reclaim disk space.
- Pin your Kubernetes version in settings to match your production environment for consistent testing.
Comparing the Three Alternatives
Each tool has distinct strengths. The right choice depends on your priorities:
- Colima is best for developers who want a minimal, fast, CLI-only Docker replacement with low overhead.
- Podman is best for security-conscious teams and those who want Kubernetes-native concepts like pods and rootless containers.
- Rancher Desktop is best for developers who need local Kubernetes and prefer a GUI-driven experience.
All three are open-source and free for commercial use, making them attractive for organizations looking to move away from Docker Desktop's licensing requirements.
General Best Practices for macOS Container Development
- Minimize bind mounts: macOS file system performance for bind mounts is slower than Linux. Use named volumes for databases and build artifacts.
- Use platform-specific images: On Apple Silicon Macs, prefer ARM64 images or enable emulation only when necessary.
- Prune regularly: Run
docker system prune -aor the equivalent in your tool to reclaim disk space. - Automate setup: Script your tool installation and configuration so new team members can onboard quickly.
- Match production: Choose the runtime and Kubernetes version that align with your production environment to reduce environment-specific bugs.
Conclusion
Docker Desktop is no longer the only viable option for running containers on macOS. Colima offers a lightweight, CLI-first experience that feels almost identical to Docker. Podman brings a daemonless, rootless, Kubernetes-aligned approach with strong security defaults. Rancher Desktop combines a friendly GUI with a built-in Kubernetes cluster for developers who need to test cloud-native applications locally. By understanding the strengths of each tool and applying the best practices outlined above, you can choose the right alternative for your team, reduce licensing risk, and often improve performance and developer experience along the way.