Containers
A container is a lightweight, standalone unit of software that packages:
- application code,
- the runtime platform (e.g. Python, Node.js, Java),
- system tools and libraries used by the application,
- configuration defaults.
All of this is bundled in a container image, so the application can run the same way in different environments (developer laptop, test server, production cluster, cloud provider X or Y).
Key idea:
1 | |
Common container engines: Docker, containerd, CRI-O, etc.
The difference with Virtual Machines is the virtualisation layers:
- Each VM has a full guest OS
- A VM hypervisor can emulate different hardware platforms
- Start slower and use more resources
Container engines
- Share the same host OS kernel
- Depend on the hardware the host OS runs on (hardware/CPU architecture)
- Start fast and use less resources
Starting Points
Key Points
- You can build docker containers and test them locally
- you can deploy docker containers to the cloud
- you can deploy a multi-docker container to a (cloud) kubernetes cluster