Jump to content
Search

This wiki is under development. Features such as file uploads and email notifications may be missing. Read the announcement.

Containers

From Ubuntu Wiki

A container is a virtualization technology that isolates software along with its dependencies. This helps ensure that an application, or set of services, is portable across different environments and behaves consistently.

While containers are key tools in modern software development, regular Ubuntu users may encounter containers as a way to run certain services locally, such as Jellyfin.

Containers are also increasingly important as ways to sandbox LLM-based development environments and experiments.

Terminal integration on Ubuntu

Since Ubuntu 25.10, the default terminal emulator Ptyxis on Ubuntu has offered first-class integration with several of the container tools described below, including automatic detection and one-click launching of Podman and Distrobox containers.

Docker

Docker is the most well-known container technology and is used to run application containers. It is has a large ecosystem of tools and integrations. Docker uses a root daemon (dockerd) by default. On Windows, Docker Desktop can use WSL as a backend. As Ubuntu is the default distro for WSL, many Windows users run Docker through Ubuntu. See the official Docker website and documentation.

Podman

Podman is a Docker-compatible technology for running application containers. Unlike Docker, Podman is daemonless and runs rootless by default. Its CLI can be used as a like-for-like replacement for docker. Podman is developed and maintained by Red Hat. See the official Podman website and documentation.

LXD

LXD can be used to run system containers and virtual machines. It is used on the backend for other container solutions, namely Workshop. LXD is developed and maintained by Canonical. See the official LXD website and documentation.

Incus

Incus is a community fork of LXD, created after Canonical brought LXD's governance in-house in 2023. It is now maintained under the Linux Containers project. See the official Incus website and documentation.

Distrobox

Distrobox integrates with Podman or Docker to provide full Linux distro environments that integrate with the host OS. It is often used to run tools or applications from other distributions that are not available on the host system. The developer of Distrobox also maintains Lilipod, a minimal alternative to Podman and Docker, which also integrates with Distrobox. See the official Distrobox website, repository, and Lilipod repository.

systemd-nspawn

This is a lightweight, namespace-based container tool built into systemd. See the official documentation.

Workshop

Workshop is a container technology for sandboxed development environments defined in YAML configuration files. It is built on top of LXD and is also maintained by Canonical.

One particular application for Workshop is AI-based development workflows. See the official product page and documentation.

WSL containers

WSL containers are a technology developed by Microsoft for managing Linux containers running within WSL, introduced in public preview in mid-2026. They are accessed through a dedicated CLI tool, wslc.exe, designed to feel familiar to Docker users, along with an API that lets Windows applications run Linux containers as part of their own logic. See the WSL documentation and the announcement post.

Comparison Table

Tool Type Isolation model Daemon Root required Official docs
Docker Application container Process-level, single app per container Yes (dockerd) Yes (rootless mode available) docs.docker.com
Podman Application container Process-level, Docker-compatible No (daemonless) No (rootless by default) docs.podman.io
LXD System container / VM Full OS userspace, persistent Yes (lxd) Yes (via lxd group) documentation.ubuntu.com/lxd
Incus System container / VM Full OS userspace, persistent Yes (incusd) Yes (via incus-admin group) linuxcontainers.org/incus/docs
Distrobox Application/distro environment Wraps Docker/Podman/Lilipod, integrates with host Inherits from backend No (rootless possible) distrobox.it
systemd-nspawn System container Chroot-like, minimal No Yes freedesktop.org
Workshop Dev environment Sandboxed, YAML-defined, agent-oriented Uses LXD backend Yes (via LXD) ubuntu.com/workshop/docs
WSL containers Application container Process-level, Linux containers on Windows via WSL Yes (via WSL/wslc) Varies (policy-controlled) learn.microsoft.com/windows/wsl