Container bündeln Anwendungen und ihre Abhängigkeiten, ohne für jede Instanz ein eigenes vollständiges Betriebssystem zu starten. Der Fachartikel von scip.ch vom 6. Oktober 2016 beschreibt die technischen Grundlagen, die Vorteile für Entwicklung und Betrieb sowie die Sicherheitsrisiken dieser Form der Betriebssystemvirtualisierung.
Die Entwicklung reicht von chroot und BSD-Jails über Solaris Container, LXC und OpenVZ bis zu Docker. Bei einer vollständigen Virtualisierung läuft ein Gastbetriebssystem auf einer virtuellen Hardware. Container teilen sich dagegen den Kernel des Hostsystems und isolieren Prozesse, Dateisysteme und Netzwerke über Softwaremechanismen.
Docker verbindet Entwicklung und Betrieb
Docker wurde 2013 als Open-Source-Projekt veröffentlicht. Die Plattform nutzt unter anderem Namespaces, Kontrollgruppen, AppArmor-Profile, Netzwerkschnittstellen und Firewall-Regeln. Für Entwicklungs- und QA-Teams liegt ein wichtiger Vorteil darin, mehrere Versionen einer Komponente parallel testen zu können, ohne Abhängigkeiten auf dem restlichen System zu verändern.
Auch in der Produktion lassen sich Container für unterschiedliche Versionen von Anwendungen und Grundkomponenten einsetzen. Updates können dadurch getrennt vorbereitet und bei Problemen auf einen vorherigen Stand zurückgesetzt werden. Das Starten einer Instanz ähnelt dabei dem Starten eines Prozesses und benötigt meist weniger Ressourcen als eine vollständige virtuelle Maschine. Ein Docker-Security-Video aus dem Quellenkontext behandelt die Sicherheitsseite der Technik.
Gemeinsamer Kernel bleibt zentrale Grenze
Die Isolation eines Containers erreicht nicht automatisch das Niveau einer virtuellen Maschine oder eines getrennten physischen Systems. Fehler bei User-Namespaces, privilegierte Funktionen wie CAP_SYS_ADMIN und falsch konfigurierte Netzwerkzugriffe können einen Ausbruch auf das Hostsystem oder Angriffe zwischen Containern ermöglichen. Auch ungepatchte Software, unsichere Images und eine Überlastung gemeinsam genutzter Ressourcen gehören zu den beschriebenen Risiken.
Für technische Teams ist deshalb die gesamte Sicherheitskonfiguration entscheidend, nicht nur das Verpacken einer Anwendung. Die Infrastruktur ergänzt dabei die eigentlichen Entwicklungswerkzeuge. Wie Lizenzentscheidungen die Planung eines Teams beeinflussen können, zeigt der zeitnahe Beitrag zur Preisstruktur von Unity 5.
