Freigeben über


Einführung in Container und Docker

Tipp

Dieser Inhalt ist ein Auszug aus dem eBook .NET Microservices Architecture for Containerized .NET Applications, verfügbar auf .NET Docs oder als kostenlose herunterladbare PDF, die offline gelesen werden kann.

.NET Microservices-Architektur für containerisierte .NET-Anwendungen eBook-Cover-Thumbnail.

Das Containerisieren ist ein Ansatz in der Softwareentwicklung, bei dem eine Anwendung oder ein Dienst sowie die zugehörigen Abhängigkeiten und Konfigurationen (abstrahiert als Bereitstellungsmanifestdateien) zusammen als Containerimage verpackt werden. Die containerisierte Anwendung kann als Einheit getestet und als Containerimageinstanz für das Hostbetriebssystem (OS) bereitgestellt werden.

Ebenso wie Versandcontainer die Beförderung von Gütern per Schiff, Zug oder Lkw unabhängig von der Fracht ermöglichen, fungieren Softwarecontainer als Standardeinheit der Softwarebereitstellung, die unterschiedliche Code und Abhängigkeiten enthalten kann. Durch die Containerisierung von Software können Entwickler und IT-Experten sie in umgebungenübergreifend mit wenig oder ohne Änderungen bereitstellen.

Container isolieren anwendungen auch voneinander auf einem gemeinsam genutzten Betriebssystem. Containerisierte Anwendungen werden auf einem Containerhost ausgeführt, der wiederum auf dem Betriebssystem (Linux oder Windows) ausgeführt wird. Container verfügen daher über einen deutlich geringeren Speicherbedarf als VM-Images (Virtual Machine).

Jeder Container kann eine ganze Webanwendung oder einen Dienst ausführen, wie in Abbildung 2-1 dargestellt. In diesem Beispiel ist Docker-Host ein Containerhost, und App1, App2, Svc 1 und Svc 2 sind containerisierte Anwendungen oder Dienste.

Diagramm mit vier Containern, die auf einer VM oder einem Server ausgeführt werden.

Abbildung 2-1. Mehrere Container, die auf einem Containerhost ausgeführt werden

Ein weiterer Vorteil der Containerisierung ist die Skalierbarkeit. Sie können schnell skalieren, indem Sie neue Container für kurzfristige Aufgaben erstellen. Das Instanziieren eines Images (Erstellen eines Containers) ähnelt der Instanziierung eines Prozesses wie einem Dienst oder einer Web-App. Für die Zuverlässigkeit sollten Sie jedoch, wenn Sie mehrere Instanzen desselben Images auf verschiedenen Hostservern ausführen, darauf achten, dass jeder Container (Imageinstanz) auf einem separaten Hostserver oder einer separaten VM in unterschiedlichen Fehlerdomänen läuft.

Kurz gesagt, Container bieten die Vorteile von Isolation, Portabilität, Agilität, Skalierbarkeit und Kontrolle über den gesamten Anwendungslebenszyklus-Workflow. Der wichtigste Vorteil ist die Isolation der Umgebung, die zwischen Dev und Ops bereitgestellt wird.