The pre Docker era
Pre VM era
Businesses bought overpowered servers which operated at 5-10% of their capacity. No one wanted unhappy customers & lost revenue.
Summary: high capex, low operational efficiency.
The VM era
VMWare, Inc created Virtual machine (VM). This allowed to run multiple applications on a server thereby increasing operational efficiency of servers
Issues with VMs:
- Slow to boot
- Not portable
- Every VM needs OS patching
- Needs monitoring
What do we mean by not portable:
Since a VM includes an entire OS, moving or migrating a VM between environments (for example, from one server to another) requires additional configurations or compatibility checks. Compare this to Docker containers - which package just the application and dependencies (rather than the OS).
The container era
- Google had started using containers while others were using VMs.
Features of containers:
- Containers share the host OS
- Faster & portable than VMs
It was not built on a sinlge day. Rhather it was a combined work of many people over years.
Google contributed container related tech to the Linux kernel.
Linux technology enabling containers:
- Kernel namespaces
- Control groups (cgroups)
But still containers were complicated until Docker made containers en-mass.
It democratized containerisation.
Docker did to containers what ChatGPT did to LLMs.
Windows containers
Windows desktop & server OS both support:
- Windows containers
- Linux containers
Windows containers require host with Windows kernel. Windows systemc run Linux containers via WSL 2.
Still most of the container use today is with Linux containers. This is bcoz, Linux containers are:
- faster
- smaller
- more tooling exists for Linux
Containers share the kernel of the host.
Anything better than containers?
Wasm (WebAssembly) builds applications that are smaller, faster, secure & portable than containers. However many standards are under development.
Docker & AI
AI requires GPU & hardware acceleration. Making this available to containers is hard since they have their own drivers & SDKs.
Solution: Docker model runer - run local LLMs outside of containers - direct access host hardware.
Kubernetes
It’s the standard platform for deploying & managing containerized apps.
Old version of Kubernetes used Docker to start & stop containers.
New versions use containerd - a stripped down version of Docker, used by Kubernetes.
