Daniel hat das Technische abgedeckt, ich nehme den Beurteilungsteil – der bringt in der Klausur die Punkte, weil dort das „es kommt darauf an“ hingehört.
Container sind die bessere Wahl, wenn:
- die Anwendung zustandslos ist und du sie einfach mehrfach starten willst (Webdienste, Schnittstellen)
- du viele kleine Dienste betreibst (Microservices)
- du eine Build- und Auslieferungspipeline hast und bei jeder Änderung neu ausrollst
- Entwicklung, Test und Produktion identisch sein sollen – das Image, das getestet wurde, ist exakt das, was produktiv läuft. Damit stirbt das berühmte „Bei mir lief es doch“
- Dichte zählt: Auf einem Host laufen problemlos Dutzende Container, aber nur eine Handvoll VMs
Eine VM brauchst du weiterhin, wenn:
- ein anderes Betriebssystem nötig ist – ein Linux-Host kann keine Windows-Prozesse ausführen, dafür muss ein eigener Kernel her
- die Isolation stark sein muss, etwa bei fremden Mandanten auf derselben Hardware. Geteilter Kernel heißt: Eine Kernel-Lücke betrifft potenziell alle Container des Hosts – das ist die größere Angriffsfläche
- Altsoftware läuft, die eine bestimmte Systemumgebung erwartet, oder du eigene Kernel-Module bzw. spezielle Treiber brauchst
- zertifizierte, abgeschottete Umgebungen regulatorisch gefordert sind
Wichtig fürs Verständnis: In der Praxis ist das kein Entweder-oder. In der Cloud laufen Container fast immer innerhalb von VMs – die VM liefert die harte Trennung zwischen Kunden, der Container die schnelle Auslieferung der Anwendung. Schreib diesen Satz in die Klausur, dann ist der Beurteilungsteil beantwortet.
Noch drei Stolpersteine aus der Praxis:
- Container sind vergänglich. Alles, was im Container geschrieben wird, ist beim Neustart weg. Daten gehören in Volumes oder in eine externe Datenbank. Eine Datenbank im Container ohne Volume ist ein garantierter Datenverlust.
- Sicherheit ist Arbeit. Nicht als root im Container laufen, nur Images aus vertrauenswürdiger Quelle mit festem Versions-Tag, regelmäßig neu bauen. Ein Image ist eine Momentaufnahme – nach drei Monaten stecken bekannte Lücken darin, auch wenn scheinbar nichts passiert ist.
- Betriebskomplexität. Bei drei Containern reicht die Kommandozeile, ab ein paar Dutzend brauchst du Orchestrierung – und die kostet Know-how. Die eingesparten Serverkosten holt der Betriebsaufwand schnell wieder rein. Das ist die betriebswirtschaftliche Seite der Antwort, die in einer WiInf-Klausur gern gesehen wird.