Skip to content

Latest commit

 

History

History
71 lines (36 loc) · 5.61 KB

ENVIRONMENTS.md

File metadata and controls

71 lines (36 loc) · 5.61 KB

Handy Container Environments

Solutions to run containers locally and remotely.

See also this great summary of local container runtimes by Bret Fisher.

⭐ Docker Desktop

Docker Desktop - "The fastest way to containerize applications."

At the heart of Docker Desktop is a LinuxKit VM running (good old) Docker Engine and fronted by an (electron?) GUI. This architecture makes it work the same way on Windows, macOS, and Linux. Additionally, Docker Desktop comes bundled with a local Kubernetes cluster and a powerful mechanism of (GUI) extensions.

Rancher Desktop

Rancher Desktop - "Container Management and Kubernetes on the Desktop."

Similar to Docker Desktop but with more focus on local Kubernetes clusters (although it can be used with the Kubernetes functionality disabled). Uses Lima VMs instead of LinuxKit. Can run either Docker Engine or containerd + nerdctl inside of a VM.

Podman Desktop

Podman Desktop - "Manage Podman and other container engines from a single UI and tray."

🤑 OrbStack

OrbStack - "Run Docker [containers] and Linux [VMs] on your Mac seamlessly and efficiently." It looks like a Docker Desktop alternative (but probably without the Docker Desktop extensions yet) with a bunch of appealing capabilities: promises to be fast(er), has a native macOS UI app, can run full-blown (and well integrated with the host) Intel and Apple Silicon Linux VMs with the ease of regular containers. Although it does have one big downside - it's not open-source (seems to be free for the time being, but the plans for eventual monetization were announced).

Lima

Lima - "Linux virtual machines, typically on macOS, for running containerd."

Lima runs a virtual machine (QEMU or Apple's Virtualization Framework) with a custom Linux distro inside that has containerd, BuildKit, and nerdctl preinstalled. It gives you close to Docker (Engine) experience on macOS (and Linux), but also the Lima-managed VM can be used on its own, and it's well-integrated with the host, meaning you can run commands in it easily. Like OrbStack, but without the UI and with many more supported host/virtualization options.

🧑‍🔬 Colima

Colima - "Container runtimes on macOS (and Linux) with minimal setup."

Colima stands for "Cotainers in Lima" - the projects extends the standard Lima capabilities (see above) and makes it possible to run Docker Engine and Kubernetes (powered by?) runtimes inside of a Linux virtual machine (createad by Lima) on macOS (and Linux).

Finch

Finch - "an open source client for container development."

A minimal native client plus an opinionated distribution of other open source components (nerdctl, containerd, BuildKit, Lima). "Finch aims to help promote other projects by making it easy to install and use them, while offering a simple native client to tie it all together."

minikube

minikube - "Run Kubernetes locally."

Despite the name, minikube can be used without Kubernetes!. Running minikube start --container-runtime=docker --no-kubernetes gives you some sort of a Docker Desktop replacement. It also uses a lightweight VM to run Docker Engine and works perfectly fine on Windows, macOS (arm performance is poor though), and Linux.

🧑‍🔬 virt

virt - "small Linux VM, ready to run containers, for macOS on ARM." Like Lima but for Podman and using the Apple Virtualization.framework instead of QEMU.

Vagrant + VirtualBox + Docker provisioner

Vagrant - "a tool for building and distributing development environments."

Vagrant is many things, but in particular it can be used as a handy VirtualBox frontend. With just about 5 lines of config, you can get a local VM with Docker Engine inside. Works the same way on Linux, Windows, and macOS, but no arm support is possible. Read more - Disposable Local Development Environments with Vagrant, Docker, and Arkade.

Distrobox

Distrobox - "Use any linux distribution inside your terminal. Enable both backward and forward compatibility with software and freedom to use whatever distribution you’re more comfortable with."

More like "a simple way to run a Linux distro in a container". Distrobox uses Podman or Docker to create containers using the Linux distribution of your choice. The created container will be tightly integrated with the host, allowing sharing of the HOME directory of the user, external storage, external USB devices and graphical apps (X11/Wayland), and audio.

nerdctl

nerdctl - "contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose, Rootless, eStargz, OCIcrypt, IPFS, ..."

Not a full-blown container runtime, but worth an honorable mention.