Cloud Native 11 min read

Exploring the Docker Ecosystem: From Chroot to Moby and Beyond

This article provides a comprehensive overview of the Docker ecosystem, tracing its historical milestones, detailing various container technologies, explaining key Docker components and concepts, and illustrating the evolution of Docker through diagrams and the Moby project.

Java Backend Technology
Java Backend Technology
Java Backend Technology
Exploring the Docker Ecosystem: From Chroot to Moby and Beyond

1. A Blooming Container Technology Landscape

Docker has propelled container technology to the forefront, but containers existed long before Docker. Various container implementations have emerged over the years, each offering different isolation mechanisms.

Chroot Jail

FreeBSD Jails

Linux VServer

Solaris Containers

OpenVZ

Process Containers (cgroups)

LXC

Warden

LMCTFY

Docker

RKT

Chroot Jail

Introduced in 1979, Chroot isolates a process's filesystem and is considered one of the earliest containerization techniques.

FreeBSD Jail

FreeBSD Jail provides OS‑level virtualization and was a pioneer in this space.

Linux VServer

Linux VServer implements OS‑level virtualization via kernel extensions.

Solaris Containers

Solaris Containers (Zones) offer resource control and isolation for X86 and SPARC systems.

OpenVZ

OpenVZ enables multiple secure, isolated Linux containers (VPS) on a single host.

Process Containers

Developed by Google engineers, Process Containers are essentially cgroups.

LXC

LXC (Linux Containers) allows multiple independent systems to run on a single Linux kernel.

Warden

Initially used LXC as its runtime; later replaced by Cloud Foundry.

LMCTFY

LMCTFY ("Let Me Contain That For You") is an open‑source Google container stack, now largely superseded by libcontainer.

Docker

Docker packages applications and their dependencies into portable containers that can run on virtually any server.

RKT

RKT (Rocket) is a security‑focused, standards‑compliant application container engine.

2. Important Docker‑Related Concepts

Docker & LXC

Docker initially used LXC as its execution environment; from version 0.9 onward it switched to libcontainer.

Docker & libcontainer

Libcontainer wraps Linux kernel features such as cgroups, namespaces, netlink, and netfilter for Docker.

2015 – Docker & RunC

RunC, a lightweight cross‑platform container runtime, was released in 2015, allowing containers to be run directly via libcontainer.

Docker & OCI

The Open Containers Initiative (OCI) was founded in 2015 by Docker, CoreOS, and other industry leaders to define standards for container runtimes and images.

2016 – Docker & Containerd

Docker split out Containerd as a separate daemon to manage container lifecycles, moving this functionality out of the Docker Engine core.

Docker Components

After the split, Docker consists of several independent components, as shown in the diagram below.

How Docker Runs a Container

Docker Engine creates a container image.

The image is handed to Containerd.

Containerd invokes Containerd‑Shim.

Containerd‑Shim uses RunC to run the container.

Containerd‑Shim exits after the container starts, allowing the runtime to be upgraded without interrupting containers.

2017 – Containers Go Mainstream

In 2017 containers became mainstream, prompting Docker to support many platforms (Mac, Windows, AWS, GCP) and to launch the Moby project.

3. Moby Project

The Moby project is an open‑source initiative that provides a collection of modular components (often likened to LEGO bricks) for building custom container‑based systems.

Key Moby components include:

Containerd

Containerd is Docker’s industry‑standard core container runtime, managing the full lifecycle of containers on Linux and Windows.

Linuxkit

Linuxkit builds secure, minimal, cross‑platform systems for containers, supporting Hyper‑V, VMware, AWS, Azure, and more.

Infrakit

Infrakit provides tools for creating and managing declarative, immutable, self‑healing infrastructure, useful for orchestrators like Docker Swarm and Kubernetes.

Libnetwork

Libnetwork, written in Go, defines a container network model (CNM) and offers a consistent API for container networking.

Docker & Docker Swarm

Docker Swarm, integrated natively since Docker 1.12, enables cluster creation and service deployment via the Docker CLI.

Docker & Kubernetes

Facing competition from Kubernetes, Docker added native support for Kubernetes integration, allowing Docker Compose applications to be deployed as Kubernetes Pods and Services.

Finally, the trend of Docker Hub image pulls from 2013 to 2017 is shown below.

Note: All images are sourced from the internet.

Reference

<An Overall View On Docker Ecosystem — Containers, Moby, Swarm, Linuxkit, containerd, Kubernetes>

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

DockerKubernetescontainerdContainer TechnologyMoby Project
Java Backend Technology
Written by

Java Backend Technology

Focus on Java-related technologies: SSM, Spring ecosystem, microservices, MySQL, MyCat, clustering, distributed systems, middleware, Linux, networking, multithreading. Occasionally cover DevOps tools like Jenkins, Nexus, Docker, and ELK. Also share technical insights from time to time, committed to Java full-stack development!

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.