"[…] Container schaffen eine stabile Ablaufumgebung für Anwendungen, zum Beispiel wenn die Software "umziehen" muss - vom Laptop eines Entwicklers in eine Test-Umgebung, ein Data Center oder die Public Cloud. […] Hierbei können Probleme auftreten, wenn die Software-Umgebungen, die Netzwerk-Topologie, die Security Policy oder der Storage nicht identisch sind. [...]). Einfach ausgedrückt besteht ein Container aus einer kompletten Laufzeit-Umgebung: der Applikation (mit allen Anhängseln), Programmbibliotheken, Konfigurationsdateien und allen sonst nötigen Tools. Durch die Containerisierung von Applikations-Plattformen werden Unterschiede hinsichtlich Betriebssystem-Distributionen und der darunterliegenden Infrastruktur abstrahiert. [...]
Bei der Virtualisierung ist das Paket, das herumgeschickt wird, eine virtuelle Maschine und beinhaltet sowohl ein komplettes Betriebssystem als auch die Applikation. Ein physischer Server, auf dem drei virtuelle Maschinen laufen, hätte einen Hypervisor und drei getrennt darauf laufende Systeme.
Im Gegensatz dazu läuft auf einem Server mit drei containerisierten Applikationen nur ein Betriebssystem. Die Container teilen sich den Betriebssystem-Kernel untereinander. Diese Bereiche beschränken sich auf ‚read only‘ - darüber hinaus besitzt jeder Container auch einen eigenen Bereich für ‚writing‘-Tasks. Dank dieser Konstellation benötigen Container wesentlich weniger Ressourcen als virtuelle Maschinen.
[...] Ein Container ist in der Regel nicht größer als 100 Megabyte, während eine virtuelle Maschine mit ihrem eigenen Betriebssystem auch mehrere Gigabyte in Anspruch nehmen kann. Deswegen kann ein einzelner Server auch wesentlich mehr Container als virtuelle Maschinen hosten. [...]"
Quelle: https://www.tecchannel.de/a/container-vs-virtualisierung,3201845
siehe auch: Containers as a Service, Container-Virtualisierung