IT-Knowledgebase
de DevOps Software Docker Serie

Docker #2 - VM vs Containers

Docker und die VirtualMachine sind beides Virtualisierungslösungen. Wir schauen uns einmal an, was genau die einzelnen Virtualisierungen sind und worin Sie sich dann letzlich unterscheiden. Dafür müssen wir wissen, dass es bei einem Betriebssystem eigentlich immer zwei Schichten gibt: Einmal ist da der OS Kernel, welcher auf die Hardware drauf zugreift und diese steuert. Der OS Kernel (Operating System Kernel) sorgt dafür, dass die Hardware miteinander funktioniert. Neben diesem OS Kernel gibt es dann noch die Anwendungsschicht (Application Layer) auf dem die Anwendungen laufen, die mit dem Kernel interagieren.

Als Beispiel haben wir den Linux Kernel. Es gibt hier verschiedene Distributionen wie Ubuntu, Debian, RedHar oder CentOS. Diese ganzen verschiedenen Anwendungen nutzen Linux als Kernel um mit der Hardware zu interagieren und ein Grundgerüst für die Steuerung von eben dieser zu haben.

VM - VirtualMachines

Bei einer VirtualMachine werden nun beide Schichten virtualisiert. Es wird also der Betriebssystem Kernel und die Anwendungsschicht virtualisiert.

Container

Bei einem Container wird ausschließlich die Anwendungsschicht virtualisiert. Das heißt, dass wir den Kernel vom Host mitnutzen und nur unsere Anwendung drauf laufen lassen.

Container vs VMs

Da wir bei einem Container nur eine Schicht verwenden, ist ein Container natürlich schneller beim "Hochfahren", da es kein Initialisieren des Betriebssystems gibt. Durch die Fehlende Schicht sind Container auch deutlich kleiner und belegen somit weniger Speicherplatz. Nachteil von Containern sind ggf. die Kompatibilität. Da wir das Host Betriebssystem mitnutzen benötigen wir ein ähnliches (Linux auf Linux oder Windows auf Windows) um unseren Container starten zu können. Die Architektur (ARM oder X64) kann eventuell auch wichtig sein, auch wenn hier Programme helfen und einfach das richtige OS simulieren. Eine VM dagegen kann überall gestartet werden, da das passende Betriebssystem mitgeliert und installiert wird.

Docker Toolbox

Mithilfe der Docker Toolbox abstrahiert man den Kernel und ermöglicht somit ein starten von Images welches für ein eigentlich anderes Betriebssystem sind. So kann auf Windows zum Beispiel ein Linux Container laufen.