Containers & Orchestration

What is Docker?

Definition

Docker is a platform and toolchain for packaging, distributing, and running applications inside lightweight, portable containers, popularising the technology from 2013 onward.

Docker is a software platform that automates the deployment of applications inside isolated user-space instances called containers. It uses operating-system-level virtualisation, primarily via Linux kernel features such as cgroups and namespaces, to run multiple isolated workloads on a single host without the overhead of a hypervisor or full virtual machines. Docker popularised the container format and tooling, providing a standardised way to build, ship, and run software.

At the core of Docker is the Docker Engine, a client-server application that includes a daemon (dockerd), a REST API, and a command-line interface (CLI). The daemon manages images, containers, networks, and storage volumes. Images are built from Dockerfiles, which specify a base image, application code, dependencies, and runtime commands. Images are stored in registries, the default being Docker Hub, and can be versioned and shared. Each container is an instantiation of an image, with its own filesystem, network stack, and process tree.

Docker's introduction in 2013 radically simplified the developer workflow for creating reproducible environments and deploying microservices. It sits between the host operating system and the application, abstracting infrastructure dependencies. The Open Container Initiative (OCI) later standardised the image format and runtime, ensuring interoperability between Docker and other container engines such as Podman and containerd. Despite competition, Docker remains the de facto reference implementation for container development, though in production environments it is often replaced by orchestration platforms like Kubernetes that use Docker as a runtime or its underlying components directly.

Key facts

  • Docker was first released in March 2013 by Docker, Inc. (formerly dotCloud).
  • Container images are built from Dockerfiles using a layered filesystem (UnionFS).
  • The default image registry is Docker Hub, which hosts millions of public images.
  • Docker Engine uses containerd as its core container runtime since version 1.11 (2016).
  • The OCI image spec (v1.0, July 2017) ensures standardisation beyond Docker.

How it works in practice

A developer writes a Dockerfile for a Python web app, starting from python:3.11-slim, copying code, installing dependencies with pip, and setting the entrypoint. They build the image with 'docker build -t myapp:1.0 .' and push it to a private registry. On a server, they run 'docker run -d -p 8080:5000 myapp:1.0', exposing port 5000 inside the container as port 8080 on the host. The app runs identically on their laptop and the production server.

Related terms

Kubernetes containerd Podman Dockerfile Docker Hub OCI (Open Container Initiative) container

References

More in Containers & Orchestration

ConfigMap

A ConfigMap is a Kubernetes API object used to store non-confidential configuration data in key-value pairs, which pods can consume as environment variables, command-line arguments, or configuration files.

Container

A container is a lightweight, isolated runtime that packages an application with its dependencies using OS-level virtualization, enabling consistent execution across environments.

Container Image

A container image is a lightweight, standalone, executable package that includes everything needed to run a piece of software: code, runtime, system tools, libraries, and settings. It is the unit of distribution in container ecosystems like Docker and Kubernetes.

Container Registry

A container registry is a service that stores and distributes container images, enabling developers to push, pull, and version images across environments.

Container Runtime

A container runtime is the low-level software that creates, starts, and stops containers according to the OCI runtime specification, enabling process isolation and resource management.

Helm

Helm is a package manager for Kubernetes that uses charts to define, install, and upgrade complex applications as a single, versioned unit.

Ingress Controller

An Ingress Controller is a Kubernetes component that watches Ingress resources and configures a reverse proxy to route external HTTP and HTTPS traffic to services inside the cluster.

Init Container

An init container is a specialized container in a Kubernetes pod that runs to completion before any regular containers start, performing initialization or setup tasks.

Kubernetes

Kubernetes is an open source platform for automating the deployment, scaling, and management of containerized applications across clusters of hosts.

Operator

A Kubernetes Operator is a custom controller that extends the Kubernetes API to automate the management of a specific application, encoding human operational knowledge as code.

Who Is Online

In total there are 64 users online: 0 registered, 56 guests and 8 bots.

Most users ever online was 5,555 on 17 Jul 2026, 3:23 am.

Bots: AhrefsBot Applebot Baiduspider Bingbot Other Bot Other Crawler PetalBot SemrushBot

Users active in the past 15 minutes. Total registered members: 369