A container is an operating-system-level virtualization method for running multiple isolated Linux systems on a control host using a single Linux kernel.
There’s an important distinction between OS-level virtualization and virtualization. The former is often known as containers.
OS-level virtualization (containers) share the same operating system kernel and isolate the application processes from the rest of the system. For example: ARM Linux systems run ARM Linux containers, x86 Linux systems run x86 Linux containers, x86 Windows systems run x86 Windows containers. Linux containers are extremely portable, but they must be compatible with the underlying system.
Containers are different from Type 1 and 2 hypervisors. A Type 1 hypervisor is known as native or bare-metal. With this type, the hypervisor runs directly on the host’s hardware to control the hardware resources and to manage guest operating systems. In other words, the software hypervisor does not require an additional underlying operating system.
The second type of hypervisor runs under a conventional operating system environment as a second layer, with the guest operating systems then running at the third level.
Virtualization uses a hypervisor to emulate hardware, which allows multiple operating systems to run side by side. This isn’t as lightweight as using containers. Compared to virtual machines, a Linux container is less resource-intensive, has a standard interface (start, stop, environment variables, etc.), retains application isolation, and is more easily managed as part of a larger application (multiple containers). Additionally, those multi-container applications can be orchestrated across multiple clouds.
Here’s our verdict on the finest OS-level virtualization (container) software captured in a legendary LinuxLinks-style chart. Only free and open source software is eligible for inclusion here.
Let’s explore the 6 containers at hand. For each application we have compiled its own portal page, providing a full description with an in-depth analysis of its features, together with links to relevant resources.
Containers | |
---|---|
Docker | Create, deploy, and run applications by using containers |
LXC | Userspace interface for the Linux kernel containment features |
containerd | Industry-standard container runtime |
Apptainer | Optimized for compute focused enterprise and HPC workloads |
Kata Containers | Uses a hypervisor to provide isolation when spawning containers |
OpenVz | Container-based virtualization |
This article has been revamped in line with our recent announcement.
Read our complete collection of recommended free and open source software. Our curated compilation covers all categories of software. The software collection forms part of our series of informative articles for Linux enthusiasts. There are hundreds of in-depth reviews, open source alternatives to proprietary software from large corporations like Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk. There are also fun things to try, hardware, free programming books and tutorials, and much more. |
Your questions are covered in our FAQ.
I find the concept of Containers to be confusing. I currently use GNOME Boxes and Quickemu.
Definitely worth investigating containers more. They are so powerful and lightweight.
Take a look at Getting Started with Docker and Distrobox for starters.
Hi Erik. Thanks, I’ll look into it again. Are Containers more suited to business use [I’m a home user]? Will the performance be far greater? Is it easier to share files and clipboards with the host OS [to and from]?
Hi Torin
It’s so easy to share files with containers. I’d say containers are great for both home users and companies. Companies benefit from the fact that containers are faster to manage and deploy than virtual machines. But there are advantages for home users and companies too such as the fact that containers are more lightweight, require fewer resources, start in milliseconds, and a single machine can host tons of containers.
Containers are so lightweight because they share the host system’s operating system. They don’t therefore need to run a full operating system.
PODMAN (from RedHat) is open source and is not Docker, but compatible. Why it is not even mentioned?
We’re going to include Podman in a forthcoming roundup (container manager tools).