Was ist Docker? Tutorial für Anfänger

Docker hat sich in kürzester Zeit zur bevorzugten Technologie für dieVerpackung und Bereitstellungmoderner verteilter Anwendungen entwickelt. Der Name Docker ist daher zumSynonym für Containergeworden. Aber was genau ist Docker, wie funktioniert es, und warum sollte man es verwenden? Lesen Sie weiter und erfahren Sie alles über die wichtigsten Konzepte und Funktionen von Docker sowie die Vorteile, die es der Unternehmens-IT bringt. Außerdem zeigen wir Ihnen, wie Sie das Beste aus Ihren Docker-Container-Umgebungen herausholen können.

Bevor wir anfangen, sehen wir uns aber zuerst die Grundlagen von Containern an.

Container 1×1

Wenn das Thema völliges Neuland für Sie ist, werden Sie sich wahrscheinlich fragen:Was sind Container überhaupt?Kurz gesagt sind Container eine Alternative zur herkömmlichenVirtualisierungs-Methode, bei der virtuelle Maschinen (VMs) diePartitionierungvon Infrastruktur-Ressourcen übernehmen. Doch während VMs vollwertige Gastsysteme sind, handelt es sich bei Containern um deutlichoptimierteBetriebsumgebungen, die nur jene Ressourcen bereitstellen, die eine Anwendung tatsächlich benötigt. Das ist dank der Art und Weise, wie Container von der Host-Infrastrukturabstrahiertwerden, möglich. Anstatt einen Hypervisor für die Verteilung von Hardware-Ressourcen zu verwenden, teilen sich Container denKerneldes Host-OS mit anderen Containern.

User-added image

Das kann den Infrastruktur-FootprintIhrer Anwendungen erheblich reduzieren, da Container alle Systemkomponenten bündeln können, die Sie für die Ausführung Ihres Codes benötigen – ohne ein komplett aufgeblasenes Betriebssystem laufen zu lassen. Die geringere Größe und Benutzerfreundlichkeit von Containern bedeutet auch, dass sie schnellergestoppt und gestartetwerden können als VMs und man somit besser auf schwankende Skalierungsanforderungenreagierenkann. Und im Gegensatz zu einem Hypervisor muss eine Container-Engine nicht ein ganzes Betriebssystem emulieren. Insgesamt bieten Container also normalerweise bessere Leistungen als herkömmliche VM-Implementierungen.

Container und die Cloud

Container sind ideal für den heutigenCloud-Ansatz in der Anwendungsarchitektur, bei dem man sich nicht auf ein großes, monolithisches Programm verlassen muss, sondern auf eine Suite von lose gekoppeltenMicroservicessetzen kann. Das bringt Ihnen eine Menge Vorteile. So können Sie beispielsweise Microservices über einen Cluster von VMsreplizieren, um dieFehlertoleranzzu verbessern. Wenn eine einzelne VM ausfällt, kann Ihre Anwendung auf andere Microservices im Cluster zurückgreifen und läuft weiter. Darüber hinaus sind Microservices einfacher zu warten, da Sie den Code und die Systemumgebung Ihrer Containerpatchen oder aktualisierenkönnen, ohne andere im Cluster zu beeinträchtigen.

User-added image

Container und DevOps

Das kompakte Design von Containern macht sie äußerst portabel. Daher lassen sie sich mit Hilfe vonDevOps-Toolswie Jenkins oder CodeShip problemlos inContinuous-Integration- (CI)undContinuous-Delivery-(CD)Workflows integrieren. Aus Sicht der Entwickler sind Container auch deshalb äußerst praktisch, weil sie aufverschiedenen Servernmit unterschiedlichen Konfigurationen gehostet werden können – vorausgesetzt, dass jedes Server-Betriebssystem denselben Linux-Kernel oder zumindest einen mit der Container-Umgebung kompatiblen Kernel verwendet.

So können sich Programmierer ganz auf den Code konzentrieren, ohne sich Gedanken über die zugrunde liegende Infrastruktur machen zu müssen, auf der dieser schließlich ausgeführt wird. Ebenso können Entwickler, unabhängig von der jeweils verwendeten Host-Umgebung, gemeinsam an Projekten arbeiten.

SolltenSieDocker verwenden?

Docker ist eine vonmehrerenverschiedenen Container-Plattformen. Warum also sollte man sie anderen Container-Lösungen vorziehen? Dafür gibt es mehrere Gründe: Erstens ist Docker der mit Abstandam häufigsten verwendeteContainer-Service. Seine Beliebtheit beruht vor allem auf der Tatsache, dass es sich um eine robuste, sichere und kostengünstige Lösung mit vielen Funktionen handelt, die einfacher zu implementieren ist als alle anderen. Zweitens handelt es sich um eineOpen-Source-Lösung, die von einer großen Gemeinschaft von Unternehmen und Einzelpersonen unterstützt wird, die wiederum kontinuierlich zu dem Projekt beitragen. Docker bietetbreiten Supportsowie einumfangreiches Ökosysteman ergänzenden Produkten, Servicepartnern und Container-Images und -Integrationen von Drittanbietern. Außerdem sind Sie durch die Entscheidung für Docker nicht an einen bestimmten Anbieter gebunden.

Zu guter Letzt erlaubt die Docker-Plattform auch die Ausführung von Containern unterWindows. Das wird durch einen Linux-Virtualisierungs-Layerermöglicht, der sich zwischen Windows und der Docker-Laufzeitumgebung befindet. Neben den Linux-Container-Umgebungen unterstützt Docker für Windows auch native Windows-Container.

Obwohl sich immer mehr Container-Alternativen entwickeln, ist Docker immer noch ein Vorreiter in diesem Bereich und für die meisten Anwendungsfälle die erste Wahl. Bevor Sie jedoch entscheiden, ob Docker das Richtige für Sie ist, und mit der Docker-Plattform durchstarten, sollten Sie die folgenden Grundkonzepte verstehen:

Docker-Engine

Diese Anwendung wird auf dem Hostrechner installiert, um Docker-Containerzu erstellen, auszuführen und zu verwalten. Sie ist das Herzstück des Docker-Systems und vereint alle Komponenten der Plattform an einem einzigen Ort.

Docker-Daemon

Diese Komponente ist die treibende Kraft des Docker-Systems. Sie empfängt und verarbeitetAPI-Anfragenzur Verwaltung der verschiedenen anderen Aspekte Ihrer Installation, z. B. Images, Container und Speichervolumen.

Docker-Client

Das ist die primäreBenutzeroberfläche这苏珥是Kommunikation麻省民主党Docker-System。Der Docker-Client nimmt Befehle über die Kommandozeile (CLI = Command-line interface) entgegen und sendet sie an den Docker-Daemon.

Docker-Image

Ein schreibgeschütztesTemplatezur Erstellung von Docker-Containern. Es besteht aus mehreren Layern, die einAll-in-One-Paketbilden, das alle Installationen, Abhängigkeiten, Bibliotheken, Prozesse und Anwendungscode enthält, die für die Erstellung einer voll funktionstüchtigen Container-Umgebung erforderlich sind.

Docker-Container

Die aktive Instanz eines Docker-Images, die entweder ein einzelnesMicroserviceoder einengesamten Anwendungs-Stackausführt. Wenn Sie einen Container starten, ergänzen Sie die darunter liegenden Layer Ihres Docker-Images mit einem obersten beschreibbaren Layer, der alsContainer-Layerbezeichnet wird. In diesem Layer werden alle Änderungen gespeichert, die während der Laufzeit am Container vorgenommen werden.

Docker-Registry

EinKatalogsystemzum Hosten sowie Hoch- und Herunterladen von Docker-Images. Sie können Ihre eigene lokale Registry oder eine der vielen Registry-Services von Drittanbietern verwenden (z. B. Red Hat Quay, Amazon ECR, Google Container Registry und Docker Hub). EineDocker-Registryorganisiert Images in Speicherorten (sogenannten “Repositories”), wobei jedes Repository eine andere Version des gleichnamigen Docker-Images enthält.

User-added image

Mit diesen Grundlagen im Hinterkopf werfen wir jetzt einen kurzen Blick auf einige andere Aspekte von Docker-Containern, über die Sie Bescheid wissen sollten:

Container-Orchestration

Sobald Sie eine Anwendung in Docker bereitstellen möchten, müssen Sie einen Weg finden, Ihre Container in Ihrer Microservice-Architekturbereitzustellen, zu konfigurieren, zu skalieren und zu überwachen. Open-Source-Orchestration-Systeme wieKubernetes, Mesos und Docker Swarm bieten Ihnen die Tools, die Sie zur Verwaltung Ihrer Container-Cluster benötigen. Diese können üblicherweise …

  • Rechenressourcen zwischen Containern zuweisen.
  • aufgrund der Auslastung von Anwendungen Container hinzufügen oder entfernen.
  • Interaktionen zwischen Containern verwalten.
  • den Zustand von Containern überwachen.
  • die Auslastung von Microservices ausgleichen.

Optimierung von Kosten und Leistung

Schlussendlich müssen Sie Ihre Bereitstellungenoptimieren, damit Sie die maximale Leistung und Effizienz aus Ihren Containern herausholen. Beginnen Sie damit, Ihre Container so gut wie möglich zurationalisieren, indem Sie nur das verpacken, was Ihre Anwendung tatsächlich benötigt. Diese Best Practice trägt auch dazu bei, dieAngriffsflächeder Container zu minimieren und dadurch die Sicherheit zu verbessern. Damit Ihre Container die Ressourcen so effizient wie möglich nutzen, sollten Sie sie regelmäßig kontrollieren, damit sie ein ausgewogenes Verhältnis zwischen CPU- und Speicherzuweisung, Clustergröße und Replikation von Microservices einhalten. Diese Schritte sind bei cloudbasierten Bereitstellungen besonders wichtig, da überflüssiger Ressourcenverbrauch zusätzliche und unnötige Kosten für die Cloud verursachen.

Erfahren Sie mehr über Docker!