Skip to main content
Containers are lightweight, isolated user-space environments that package an application and its dependencies together while sharing the host operating system kernel. They give each container its own:
  • Process tree (via PID namespaces)
  • Network stack (via network namespaces)
  • Filesystem mounts (via mount namespaces)
  • Resource controls (via cgroups)
Because containers share the host kernel rather than a full guest OS, they are far more resource-efficient and faster to start than traditional virtual machines, while still providing strong isolation for processes and services.
A presentation slide titled "What Is A Container?" showing four illustrated container cards labeled with "Processes", "Network", and "Mounts" above an "OS Kernel" bar. A presenter wearing a KodeKloud T-shirt appears at the right side of the image.
Historical context and runtimes Container technology is not new. Linux container primitives and projects have been around for many years, including LXC, LXD, and LXCFS. Docker popularized containers for developers by building a higher-level toolset around these primitives, making it easy to build, distribute, and run container images.
  • Early Docker used LXC under the hood.
  • Around Docker v0.9.0 (circa 2014), Docker introduced libcontainer and later the runc project, which became the reference implementation of the OCI runtime.
  • Modern Docker typically uses containerd + runc for the low-level container runtime stack.
OCI stands for the Open Container Initiative. It defines open standards for container runtimes and image formats so different tools can interoperate.
Quick comparison: containers vs virtual machines Common container-related projects and roles Why use Docker (and similar higher-level tools)? Directly configuring kernel primitives (namespaces, cgroups, mounts) is possible but complex and error-prone. Docker and comparable tools wrap those low-level operations with:
  • Declarative image formats (Dockerfiles / OCI images)
  • Image registries for distribution
  • Simple CLI and APIs for running and managing containers
  • Integration with orchestration platforms like Kubernetes
References and further reading

Watch Video