Amazon, among other FAANG companies, never needed containers shipping entire bundled OSes.
Deploying a "base OS" (using PXE or netboot) can be done very reliably both on a hypervisors and VMs.
A simple build system can then generate traditional packages and push them into VMs allocated for a specific product.
It provides better security isolation and the ability to receive security updates on OSes and also on dynamically linked libraries.
Building and deploying new versions of you product is also much faster, especially at large scale: only your application package is rebuilt and deployed.
The fact that many other containers run entire OS is because it's easier to get started, or there are runtimes needed, or people just build and deploy in the same image.
People have hurriedly forgotten why Linux distros exist: https://opensource.com/article/19/2/linux-distributions-stil...
Even when you write a lot of software, environments always drag in existing tools and infrastructure (aka other open source). 99% it's easier to consume pre-built SME knowledge from. Linux distro #HailTheMaintainers
Strict versioning of every dependency - exactly the thing a packaging system solves.
Specific system configuration? Also not a problem at all with netboot images.
CI picks up your image build, then commits its record to a DB from which DHCP server looks up a boot image for given MAC, then it either SSHed a reboot command or used an IPMI reboot. Voila
Today, some server motherboard firmwares can boot images off HTTP, vlan, and can talk with the boot server itself on HTTP
It could have easily been VMs instead of containers. IMHO, it was all the packaging...
That being said, I’d agree that netboot + tmpfs has a lot of advantages; unfortunately, it’s not always practical, especially at smaller scales. Containers are convenient and don’t require any special hardware accommodations.
What's wrong with not using Docker? Outside of cloud/SOA/webscale sector, people having hard time to simply comprehend the drama.
I have not seen any justification for using containers on any scaleable system on real hardware for example.
In "ad-farm" world, running ad farms on pure hardware with netboot provisioning has been the "gold standard" since time immemorial.
Few points:
1. Netboot with root at tmpfs takes less time to boot, seconds over 10G (most of the time is spent on POST and DHCP actually.)
2. Netboot images can be stripped to the barest minimum of life-sustainance. Less software running — less problems.
3. Less attack surface for hackers.
4. Hard lockup proof - hardware watchdogs are more or less foolproof.
5. Linkup to the real network is as simple as it gets, you can use broadcasts for self-configuration and service discovery on the network.
6. If you deal with RDMA, well, you will be already spending most of your efforts on just getting software work as advertised on the bare system, and the additional troubles of containerisation will not worth dealing with.