On this page
Definition
A container is a standardised, isolated unit of software that packages an application together with its dependencies, sharing the host operating system's kernel rather than running a full separate operating system.
Simple explanation
Imagine shipping goods in standardised containers that fit on any ship, train or truck regardless of what is inside them. Software containers apply the same idea: an application and everything it needs is packaged into one standard unit that can run on any compatible machine.
Unlike a full virtual machine, which simulates an entire computer including its own operating system, a container shares the host machine's operating system kernel. This makes containers much faster to start and far lighter on resources.
Why it matters
Containers solve the long-standing problem of software behaving differently across environments, by isolating an application's dependencies from the underlying machine.
They are the foundation of modern cloud-native architecture, enabling microservices, consistent deployments and efficient use of server resources at scale.
How it works
- 1PackageAn application and its dependencies are bundled into a container image.
- 2IsolateThe container runs in its own isolated process space, separate from other containers.
- 3Share kernelIt uses the host machine's operating system kernel instead of running its own.
- 4OrchestrateMultiple containers are often managed together by a tool that handles scaling and networking.
Real examples
Products named for illustration only. Inclusion is not an endorsement.
- Docker containerThe most common implementation of the container concept in practice.
- Kubernetes podA group of one or more containers deployed and managed together.
- AWS FargateRuns containers without requiring you to manage the underlying servers.
- PodmanAn alternative container engine compatible with the same container image format.
Advantages
- Starts far faster than a full virtual machine.
- Uses fewer system resources by sharing the host's kernel.
- Isolates applications from each other and from the host environment.
- Portable across any machine that supports the container runtime.
Limitations
- Weaker isolation than a full virtual machine, since the kernel is shared.
- Managing many containers at scale requires orchestration tools with their own complexity.
- Persistent data storage needs deliberate configuration, since containers are designed to be disposable.
- Security depends on keeping the host kernel and container images properly patched.
Common misunderstandings
- ClaimA container is a lightweight virtual machine.RealityIt is a different concept — containers share the host's kernel rather than virtualising an entire operating system.
- ClaimContainers are inherently secure by default.RealityContainers reduce certain risks but still require patching, minimal images and careful configuration to be secure.
Frequently asked questions
What is the difference between a container and Docker?
A container is the general concept; Docker is one popular platform for building and running containers.
Are containers secure?
They add useful isolation, but sharing the host kernel means they are not as strongly isolated as a full virtual machine.
Do containers store data permanently?
Not by default — containers are designed to be disposable, so persistent data typically needs a separate storage volume.
Can containers run on any operating system?
Linux containers need a Linux kernel, though tools like Docker Desktop provide compatibility layers for Windows and macOS.
Why are containers popular for microservices?
Their light weight and fast startup make it practical to run many small, independent services on shared infrastructure.
The Tool Money Lab perspective
The container concept, not any single vendor's implementation, is what genuinely changed how software gets deployed — Docker simply made it accessible enough for mainstream adoption.
When we assess infrastructure claims from a vendor, we look for whether 'containerised' actually means consistent, orchestrated deployment, or is just a buzzword attached to a single Docker file with no real operational maturity behind it.
Conclusion
A container packages an application with everything it needs to run consistently, while staying lighter and faster than a full virtual machine by sharing the host's kernel.
It is the underlying concept that tools like Docker and platforms like Kubernetes are built around, and understanding it clarifies most of modern cloud infrastructure.