Virtualization was standard when Docker came around 2013 and made containerization the new state of the art. This new ecosystem shifted the landscape and was under heavy development, which today we want to make a snapshot of. This post should not only cover Docker but software abstraction in general.
As things change I constantly update this post and adjust it. If you find a bug or want to recommend something, please feel free to open an issue and help me get better. - Thank you!
- Types and formats
- Cluster Managers
- Cloud Hosting
Types and formats
Running multiple operating system environments on the same hardware you have to abstract the hardware components from the OSes. This is called virtualization.
The software to abstract the hardware away from the OS is often called hypervisor. The different types can be categorized in Bare-Metal Type-1, which is just installed directly onto the hardware, and Hosted Type-2 were first an OS is installed an then the hypervisor is put ontop of the OS. Type-1 is more direct and therefore faster as Type-2 has better driver support.
In this article we mainly look at virtualization of computing on physical hardware. Which already is a huge topic as can be seen looking at the incomplete comparison site at Wikipedia. Still there is a lot more out there to abstract as for example networks, or the JVM with is abstracting OS specifics away from Java.
This type of virtualization always needs a host OS on which it is running. This overview show’s the most important ones. Even sometimes Type-2 virtualization is synonymously called containerization, in here I want to separate between just virtualization and containerization as if they were clearly separated to illustrate the new approach of shipping software in (Docker) containers more clearly.
Standardized OCI Image Format
CM for containers
CH for containers
- Heroku Container Registry & Runtime