Docker: The Container Platform That Changed How Software Is Deployed
Docker packages applications with their dependencies into lightweight containers that run consistently across environments, using Linux kernel namespaces and cgroups.
Docker is an open-source platform (released 2013) for building, shipping, and running applications in containers. A container packages an application with its runtime dependencies, libraries, and configuration into a portable, isolated unit that runs consistently across environments. ## Containers vs Virtual Machines Unlike virtual machines, containers share the host OS kernel, making them far more lightweight — startup in milliseconds versus minutes, with much lower memory overhead. The isolation comes from Linux kernel primitives: namespaces (process, network, filesystem isolation) and cgroups (CPU, memory, I/O resource limits). ## Core Concepts - **Images**: Immutable layered filesystems defined by a Dockerfile — each instruction creates a layer, cached for fast rebuilds - **Containers**: Running instances of images - **Registries**: Distribution hubs (e.g., Docker Hub) for sharing images ## Impact Docker accelerated the adoption of microservices architectures and CI/CD pipelines by solving "it works on my machine" — if it runs in a container, it runs the same everywhere. Container orchestration at scale is handled by Kubernetes, which Docker containers are natively compatible with. **See also:** Homelab Proxmox Cluster Design with Role-Based Node Separation