Einführung in Container und DockerIntroduction to Containers and Docker

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.Containerization is an approach to software development in which an application or service, its dependencies, and its configuration (abstracted as deployment manifest files) are packaged together as a container image. Die Containeranwendung kann als Einheit getestet und als Instanz eines Containerimages für das Hostbetriebssystem (OS) bereitgestellt werden.The containerized application can be tested as a unit and deployed as a container image instance to the host operating system (OS).

So wie das Versenden von Containern es ermöglicht, Güter unabhängig von der enthaltenen Fracht per Schiff, Zug oder LKW zu transportieren, agieren Softwarecontainer als Standardeinheit für Softwarebereitstellung und können verschiedenen Code und verschiedene Abhängigkeiten enthalten.Just as shipping containers allow goods to be transported by ship, train, or truck regardless of the cargo inside, software containers act as a standard unit of software deployment that can contain different code and dependencies. Das Containerisieren von Software auf diese Weise ermöglicht es Entwicklern und IT-Experten, diese ohne oder mit geringfügigen Änderungen in verschiedenen Umgebungen bereitzustellen.Containerizing software this way enables developers and IT professionals to deploy them across environments with little or no modification.

Container isolieren Anwendungen auf einem gemeinsamen Betriebssystem außerdem voneinander.Containers also isolate applications from each other on a shared OS. Containeranwendungen werden auf einem Containerhost ausgeführt, der auf dem Betriebssystem (Linux oder Windows) ausgeführt wird.Containerized applications run on top of a container host that in turn runs on the OS (Linux or Windows). Daher haben Container einen erheblich geringeren Speicherbedarf als die Images für virtuelle Computer (VM).Containers therefore have a significantly smaller footprint than virtual machine (VM) images.

Jeder Container kann wie in Abbildung 2-1 gezeigt eine gesamte Webanwendung oder einen gesamten Dienst ausführen.Each container can run a whole web application or a service, as shown in Figure 2-1. In diesem Beispiel ist Docker-Host ein Containerhost und App1, App2, Svc1 und Svc2 sind die Containeranwendungen oder -dienste.In this example, Docker host is a container host, and App1, App2, Svc 1, and Svc 2 are containerized applications or services.

Zwei Anwendungen und zwei Dienste, die unter dem Betriebssystem in einer VM oder auf einem physischen Server ausgeführt werden.

Abbildung 2-1.Figure 2-1. Mehrere Container, die auf einem Containerhost ausgeführt werdenMultiple containers running on a container host

Ein weiterer Vorteil der Containerisierung ist die Skalierbarkeit.Another benefit of containerization is scalability. Ein schnelles Skalieren ist möglich, indem Sie neue Container für kurzfristige Aufgaben erstellen.You can scale out quickly by creating new containers for short-term tasks. Aus der Sicht einer Anwendung ähnelt das Instanziieren eines Images (Erstellen eines Containers) dem Instanziieren eines Prozesses wie ein Dienst oder eine Web-App.From an application point of view, instantiating an image (creating a container) is similar to instantiating a process like a service or web app. Für die Zuverlässigkeit beim Ausführen von mehreren Instanzen desselben Images auf mehreren Hostservern sollte jedoch jeder Container (Instanz des Images) auf einem anderen Hostserver oder virtuellen Computer in verschiedenen Fehlerdomänen ausgeführt werden.For reliability, however, when you run multiple instances of the same image across multiple host servers, you typically want each container (image instance) to run in a different host server or VM in different fault domains.

Kurz gesagt bieten Container die Vorteile der Isolation, Portabilität, Agilität, Skalierbarkeit und Steuerung des gesamten Workflows des Lebenszyklus der Anwendung.In short, containers offer the benefits of isolation, portability, agility, scalability, and control across the whole application lifecycle workflow. Der wichtigste Vorteil ist die Isolation der Umgebung zwischen Entwicklung und Betrieb (Dev and Ops).The most important benefit is the environment's isolation provided between Dev and Ops.