Skip to content

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
“If it runs in my container, it will run the same anywhere this container engine is available.”

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