- Features of Linux (Kernel) used to implement containers
- Process Isolation
- Cgroups
- Namespaces
- UnionFS
- Process Isolation
Containers are a Linux (only) feature, made possible by those above. Non-Linux platforms (Windows, MacOS) require a Linux VM (behind the scenes) to run containers.
- Container Runtime
- Low-level component that executes containers and interfaces with kernel features
- Container Engine
- Higher-level component that provides user-facing functionality, APIs, and commands
- Container Image:
- Packaged, immutable template containing application code, libraries, and dependencies
-
Tools that leverage or enhance features of containers
- Image Manager (building etc)
- docker, podman, buildah, kaniko
- Container Runtime
- docker, podman, container-d, cri-o
- Container Orchestrator
- kubernetes, openshift, rancher, nomad
- Package Manager
- helm
- Development Platforms (for non-Linux systems)
- Docker Desktop (MacOs and Windows)
- bundles a Linux VM, Docker runtime, and UI
- Podman Desktop (MacOs and Windows)
- bundles a Linux VM, Podman runtime, and UI
- Colima (MacOS)
- bundles Linux VM (through Lima) with a container runtime Docker or Podman - configurable)
- no GUI (command line only)
- Docker/Podman Desktop do not use colima under the hood
- Lima (MacOS)
- provides a lightweight Linux VM; requires you to install a runtime like Docker or Podman separately
- Docker Desktop (MacOs and Windows)
- Image Manager (building etc)