Container Virtualisierung mit Docker
Was steckt hinter dem Begriff Container Virtualisierung? Und was bedeutet das für den Betreiber einer solchen Umgebung?
Im Gegensatz zur Virtualisierung von Rechnersystemen wird bei Docker nur die Applikation und ihre spezifische Umgebung in ein Image gepackt und auf einer Docker Engine ausgeführt. Als einfaches Beispiel betrachten wir eine Web-Applikation. Der Webserver mit den erforderlichen Modulen und Konfigurationen sowie die Web-Applikation mit Inhalt und Programmlogik werden in ein Image gepackt. Die Docker Engine ist die Laufzeitumgebung und stellt die Rechenleistung, das Betriebssystem und das Netzwerk zur Verfügung. Ein Image kann also fixfertig zusammengeschustert und als Container mehrfach auf der Docker Engine ausgeführt werden.
Neue Verantwortungen
Dieses Konzept bietet verschiede Vorteile. Stichwort DevOps: Der Entwickler stellt dem Betrieb ein lauffähiges und getestetes Image der Applikation inkl. Umgebung zur Verfügung. Dadurch verschiebt sich die Verantwortung allerdings in Richtung des Entwicklers. Dem Betrieb bieten sich verbesserte Möglichkeiten der Skalierbarkeit.
Ein Image kann als Container mehrfach auf einem oder mehreren Nodes ausgeführt werden. Eine Gruppe solcher Docker Nodes nennt man Schwarm. Ein Schwarm besteht aus Managern und Workern, wobei die Manager in der Regel auch Worker sind und selbst Container ausführen können. Das macht Docker doch schon mal sympathisch. Die Manager übernehmen zusätzlich die Aufgabe der Orchestrierung, sprich die Container auf den Nodes zu verteilen und bei Bedarf neu zu starten.
Neue Bedingungen
Der Betreiber muss sich den verschobenen Grenzen zwischen DEV und OPS bewusst sein und klar definieren, wie weit er in die Images eingreifen soll. Aufgaben wie Monitoring, Logmanagement, Backup oder Netzwerk-Sicherheit sind nach wie vor wahrzunehmen und den neuen Bedingungen anzupassen. So sollen die Logs nicht in den Containern sein, sondern zentral verwaltet werden. Das Monitoring muss flexibel sein und damit umgehen können, dass Container auftauchen und verschwinden können. Netzwerkgrenzen sind weiterhin sicherzustellen. Persistente Daten müssen auf einem Volume ausserhalb der Container gehalten und nach Bedarf gesichert werden.
Docker baut zur Kommunikation der Container untereinander sowie nach aussen separate Bridge-Netzwerke auf. Hier gibt es neue Aufgaben für den Betreiber. Zum Beispiel sind unnötige Verbindungen mittels Firewall zu verhindern und die Kommunikation zu protokollieren. Eine weitere Möglichkeit bieten Overlay-Netze, bei denen die Kommunikation unter den Containern verschlüsselt ist.