Deploy style: Containers
This is an article in a series on Deployment.
Docker has popularised the concept of deploying containers. Containers should not be confused with images. VPS providers for example, run images in a virtual machine, on a much larger physical machine. Before Docker, when you would like to have some form of reproducible builds, you would build your own images to create controlled environments. These images were then spun up like virtual machines. Docker, however, is building on Linux kernel features such as namespaces and cgroups, hence not requiring a full OS as a lot of tasks are executed by the host-kernel, outside Docker, making it a more efficient way of deploying. Security wise, one might argue that hardware based virtualisation is safer, but when you’re controlling the machine something of reduced importance.
There are different ways to run containers: Docker, Podman, Kubernetes and more. You may even consider running containers using runc and containerd, tools that aforementioned tools also build upon.
Properties
See for possibilities Deploying Web applications:
- Style: Neither (as is)
- OS virtuality: Not applicable
- Application virtuality: Direct, but using namespaces and cgroups
- From where: Anywhere, but typically used in devops flows
- Scope: Application