Colima - Docker Desktop alternative for MacOS

Docker Desktop alternative for MacOS

In modern software development, the use of containerization has become standard practice and Docker is probably the most common platform for this. However, in light of the changes to Docker Desktop licensing, which now requires the purchase of the Enterprise version for commercial use, many developers and companies are looking for alternatives.

In this article, I will look at the Docker Desktop alternative that should be a suitable solution for Apple Silicon M1/M2 and Intel MacOS users and companies who are unable to purchase or use the paid version of Docker Desktop.

Reasons to abandon Docker Desktop

For large organizations where the number of developers can reach hundreds or even tens of thousands, the cost of Docker Desktop licenses can be significant.

Let’s take a look at the corporate price of Docker Desktop:

Docker Desktop alternative for MacOS

If you have a small team of up to 100 people, you will need to pay $9 per person per month, but if you have an Enterprise for thousands of people, the price for the license will be $24 per user per month.

At first glance, it doesn’t seem like much, but let’s calculate the potential cost for a company to purchase licenses for 1000 people for 1 year.

  • Count of developers in the company: 1000
  • One license costs: 24$
  • Number of months: 12

Total: 1000*24*12 = 288 000$

Ultimately, we obtained $288,000 USD per year for a company with 1000 developers, which is a substantial amount for companies looking to optimize their expenses. The company could have invested these funds in business development or allocated them to increase employee salaries with the aim of retaining staff within the company.

One of the options for optimizing company costs is to switch to free alternatives. Below we will talk about one of them.

Colima – A free alternative Docker Desktop for MacOS

Colima is a tool for managing Docker containers on macOS and Linux that guarantees a stable work of Docker CLI, and solves port forwarding and mount volumes. It is a lightweight and efficient open-source alternative to Docker Desktop. It has not GUI, just CLI version.

To create an isolated virtual machine for Docker, Colima uses a VM Lima. Colima also provides a command line interface to manage VMs and containers with simple commands, and allows you to run multiple VMs locally.
Moreover, Colima also supports Kubernetes, giving developers the flexibility to orchestrate containers and manage microservices right on their local machines.

All of this makes Colima a powerful tool for those looking for an alternative to Docker Desktop on the MacOS platform.

Colima - Docker Desktop alternative for Mac OS

GitHub Repository

https://github.com/abiosoft/colima

Installing

  1. First, you need to uninstall the Docker Desktop (if you have it installed).
  2. Now let’s install the Docker CLI and Docker Compose using Homebrew
brew install docker
brew install docker-compose
  1. Let’s install Colima
brew install --HEAD colima
  1. Now that the Colima application is installed, we need to start the VM
// For Apple Silicon (M1/M2/ARM) CPU
// Requires Lima >= 0.14, macOS >= 13.0 (Ventura)
colima start --arch aarch64 --vm-type=vz --vz-rosetta

// Foc Mac using Intel, you can use on of the following commands:
colima start
// or but requires Lima >= 0.14, macOS >= 13.0
colima start --vm-type=vz

The flags of command:

  • --arch aarch64 : Set the virtual machine to use ARM64 architecture compatible with your CPU.
  • --vm-type=vz : Set virtual machine type (qemu, vz) (default “qemu”)
    • qemu option makes use of QEMU to run guest operating system. This option is used by default if “vmType” is not set.

      QEMU is an open-source emulator and virtualizer that allows users to run multiple operating systems on a single physical host machine. It supports a variety of processor architectures and is widely used for development, testing, and virtualization purposes. QEMU enables near-native performance by executing the guest code directly on the host CPU, with support for hardware virtualization.
    • vz option makes use of native virtualization support provided by macOS Virtualization.Framework.

      The Virtualization framework provides high-level fast APIs for creating and managing virtual machines (VM) on Apple silicon and Intel-based Mac computers. Use this framework to boot and run MacOS or Linux-based operating systems in custom environments that you define. 

      vz mode is experimental – but it’s just about the only option that allows you to run containers on Apple Silicon CPUs.
  • --vz-rosetta : Enable Rosetta for amd64 (x86_64) emulation when using an ARM64 virtual machine.

About Rosetta

Rosetta is a dynamic binary translator developed by Apple Inc. for macOS, an application compatibility layer between different instruction set architectures. It enables a transition to newer hardware, by automatically translating software. 
——–
In 2020, Apple announced Rosetta 2 would be bundled with macOS Big Sur, to aid in the Mac transition to Apple silicon. The software permits many applications compiled exclusively for execution on x86-64-based processors to be translated for execution on Apple silicon.

From Wikipedia

See the following flowchart to choose the best vmType (--vm-type) for you:

Docker Desktop alternative for MacOS
How to choose the right vmType, the picture was taken from source.
  1. To check that the VM is running, run the following command
colima status
Colima - Docker Desktop alternative for MacOS

Now you can run your Docker and Docker Compose projects using familiar Docker commands:

docker ....
// or
docker-compose up -d

Kebernetis

To work with Kubernetes we need kubectl, let’s install it

brew install kubectl

To activate Kubernetes, start Colima with the flag --kubernetes.

colima start --kubernetes

You can read more in the documentation or in the article.

Other helpful commands

By specifying the --cpu and --memory flags at VM startup, you can granularly increase the allocated resources for the VM you are creating

If you want to change the configuration of the VM, you first need to delete the previous VMs, create a new one, and then start the Docker containers. Otherwise, there will be issues with containers hanging during creation, and you will need to manually kill all the Colima and Lima VM processes.
colima start --arch aarch64 --vm-type=vz --vz-rosetta --cpu=8 --memory=12

To stop VM

colima stop
colima stop -f  // in case you are not able to use 

To remove VM. It would be great to use in case of changing the configuration of a VM.

colima delete <name>

To get a list of VMs and their characteristics.

colima list

Colima config

You can find the configuration of the created Colima VMs at the following path ~/.colima/<VM-Name>/colima.yaml , there you can read about possible VMs configurations and limitations.

In order for any VM to be created with preset settings, you can create the override file /Users/<Username>/.lima/_config/override.yaml and put in the necessary values.

Not all settings could be redefined via override.yaml

Possible issues

While using Docker Compose you can face several issues:

  1. Containers do not start, and hang when created or after OS reboot.
    There are the following options:
    • Try to run colima stop if colima stop -f does not work.
      Start the VM again and try to start the project.
    • If the above does not help, uninstall the Colima VM – colima delete <vm> .
      Re-create the VM and have to pull and build the project all over again.
    • Remove VM and try to change the filesystem type (see option 1).
  2. The error Error response from daemon: Conflict. The container name "/wodby_nginx" is already in use.
Error response from daemon: Conflict. The container name "/wodby_nginx" is already in use by container "a0c8338054a084a348557bef7f4725d2883d13abdb". You have to remove (or rename) that container to be able to reuse that name.

// To fix this issue just remove the container

$> docker container rm a0c8338054a084a348557bef7f4725d2883d13abdb
  1. Cannot chown or chmod bind mounted files/dirs

Conclusion

In the context of resource savings and budget optimization, using Colima as an alternative to Docker Desktop for MacOS can result in significant cost reductions, especially for large companies with thousands of developers.

Thus, Colima not only provides the necessary tools to work with Docker and Kubernetes on MacOS but also provides a unique opportunity for companies to significantly reduce their costs, thus freeing up significant financial resources for more strategic tasks.

When you consider the potential spend of $288,000 per year on Docker Desktop licenses for a team of 1,000 people, it’s clear that switching to a free tool like Colima could save a company millions of dollars over the course of several years.

These savings could be used for other critical aspects of the business, such as product development, marketing, improving working conditions or increasing employee salaries, which could ultimately contribute to the company’s growth and market position.

Other Docker Desktop alternatives

  • Rancher Desktop – Container and Kubernetes management. GUI available.
    Open-source desktop application for Mac, Windows, and Linux. Rancher Desktop runs Kubernetes and container management on your desktop. You can select the version of Kubernetes you want to run. You can create, move, extract, and run container images using containerd or Moby (dockerd). Created container images can be started by Kubernetes immediately, without the need to create a registry.
  • Podman – free and open-source tool for working with containers. GUI available.
    Manage containers, pods and images with Podman. Seamless work with containers and Kubernetes from the local environment.
  • Minikube – open source tool, implements a local Kubernetes cluster on macOS, Linux and Windows. The main goals of minikube are to be the best tool for local Kubernetes application development and to support all Kubernetes features that are suitable. CLI version only.

Андрей Писаревский

Author: Andrei Pisarevskii 

PHP | WordPress Team Lead. I have commercial programming experience since 2010 and expertise in the full cycle of web development: Frontend, Backend, QA, Server administration, managing large teams and Enterprise projects.

Leave a Reply

Your email address will not be published. Required fields are marked *