Einführung in Docker: Ein Anfängerleitfaden

Einführung in Docker: Ein Anfängerleitfaden

  • ITOps & DevOps
6 Minuten Lesezeit Aktualisiert Mar 25, 2021

Auf einen Blick: Docker ist eine Open-Source-Plattform, die Anwendungscontainerisierung ermöglicht und die Effizienz beim Aufbau, Betrieb und Bereitstellen von Anwendungen steigert. Es modularisiert Anwendungen und ermöglicht eine unabhängige Skalierung und Verwaltung von Komponenten.

  • Docker verbessert die Ressourcennutzung und vereinfacht den Softwareentwicklungszyklus.

  • Es unterstützt verschiedene Tools, darunter Kubernetes und MongoDB.

Docker ist eines der beliebtesten Werkzeuge für Anwendungscontainerisierung. Docker ermöglicht Effizienz und reduziert betriebliche Belastungen, sodass jeder Entwickler in jeder Entwicklungsumgebung stabile und zuverlässige Anwendungen bauen kann.

Schauen wir uns Docker an, beginnend mit der Anwendungsentwicklung vor Docker.

(

App-Entwicklung heute

Eine häufige Herausforderung für DevOps-Teams ist das Management der Abhängigkeiten und des Technologiestacks einer Anwendung in verschiedenen Cloud- und Entwicklungsumgebungen. Im Rahmen ihrer Routineaufgaben müssen sie die Anwendung operationell und stabil halten – unabhängig davon, auf welcher Plattform sie läuft.

Entwicklungsteams hingegen konzentrieren sich darauf, neue Funktionen und Updates zu veröffentlichen. Leider beeinträchtigen diese oft die Stabilität der Anwendung, indem sie Codes bereitstellen, die umgebungsabhängige Fehler verursachen.

Um diese Ineffizienz zu vermeiden, setzen Organisationen zunehmend auf ein containerisiertes Framework , das es ermöglicht, ein stabiles Framework zu entwerfen, ohne hinzuzufügen:

  • Komplexitäten
  • Sicherheitslücken
  • Operative lose Enden

Einfach ausgedrückt ist Containerisierung der Prozess, den Code einer Anwendung – mit Abhängigkeiten, Bibliotheken und Konfigurationsdateien, die die Anwendung zum effizienten Start und effizienten Betrieb benötigt – in eine eigenständige ausführbare Einheit zu packen.

Anfangs gewannen Container nicht an Bedeutung, hauptsächlich wegen Usability-Problemen. Seit Docker jedoch durch die Bewältigung dieser Herausforderungen auf die Bühne kam, sind Container praktisch zum Mainstream geworden.

Was ist Docker?

Docker ist eine Linux-basierte, Open-Source-Containerisierungsplattform, die Entwickler nutzen, um Anwendungen für die Bereitstellung mit Containern zu erstellen, auszuführen und zu verpacken. Im Gegensatz zu virtuellen Maschinen bieten Docker-Container:

  • Betriebssystem-Abstraktion mit optimaler Ressourcenauslastung
  • Interoperabilität
  • Effizienter Bau und Test
  • Schnellere Anwendungsausführung

Grundsätzlich modularisieren Docker-Container die Funktionalität einer Anwendung in mehrere Komponenten, die es ermöglichen, sie bei Bedarf unabhängig zu bereitstellen, zu testen oder zu skalieren.

Nehmen wir zum Beispiel eine Docker-Containerdatenbank einer Anwendung. Mit einem solchen Framework kann man die Datenbank unabhängig von anderen Modulen/Komponenten der Anwendung skalieren oder warten, ohne die Arbeitslasten anderer kritischer Systeme zu beeinträchtigen.

Behälter

Komponenten einer Docker-Architektur

Komponenten einer Docker-Architektur

Docker umfasst die folgenden verschiedenen Komponenten innerhalb seiner Kernarchitektur:

  • Bilder
  • Behälter
  • Register
  • Docker Engine

Bilder

Bilder sind wie Blaupausen, die Anweisungen zum Erstellen eines Docker-Containers enthalten. Bilder definieren:

  • Anwendungsabhängigkeiten
  • Die Prozesse, die laufen sollten, wenn die Anwendung startet,

Sie können Images von DockerHub erhalten oder eigene Images erstellen, indem Sie spezifische Anweisungen in eine Datei namens Dockerfile einfügen.

Container sind Live-Instanzen von Bildern, auf denen eine Anwendung oder ihre unabhängigen Module ausgeführt werden.

In einer objektorientierten Programmierungsanalogie ist ein Bild eine Klasse und der Container eine Instanz dieser Klasse. Dies ermöglicht operative Effizienz, indem es ermöglicht, mehrere Container aus einem einzigen Bild zu verwenden.

Register

Eine Docker-Registrierung ist wie ein Archiv von Bildern.

Das Standardregister ist das Docker Hub, ein öffentliches Register, das öffentliche und offizielle Bilder für verschiedene Sprachen und Plattformen speichert. Standardmäßig wird eine Anfrage nach einem Abbild aus Docker innerhalb der Docker Hub-Registry durchsucht.

Du kannst auch ein privates Register besitzen und es so konfigurieren, dass es die Standardquelle für Bilder für deine individuellen Anforderungen ist.

Docker Engine

Die Docker Engine ist einer der Kernkomponenten einer Docker-Architektur, auf der die Anwendung läuft. Man könnte die Docker Engine auch als die auf dem System installierte Anwendung betrachten, die Container, Images und Builds verwaltet.

Eine Docker Engine verwendet eine Client-Server-Architektur und besteht aus folgenden Unterkomponenten:

  • Der Docker-Daemon ist im Grunde der Server, der auf dem Host-Rechner läuft. Er ist verantwortlich für das Erstellen und Verwalten von Docker-Images.
  • Der Docker-Client ist eine Befehlszeilenschnittstelle (CLI) zum Senden von Anweisungen an den Docker-Daemon mit speziellen Docker-Befehlen. Obwohl ein Client auf dem Host-Rechner laufen kann, verlässt er sich auf die REST-API der Docker Engine, um sich aus der Ferne mit dem Daemon zu verbinden.
  • Eine REST-API unterstützt Interaktionen zwischen dem Client und dem Daemon.

Vorteile von Docker im SDLC

Docker bietet zahlreiche Vorteile entlang einer Anwendungsarchitektur. Dies sind einige der Vorteile, die Docker über mehrere Phasen des Softwareentwicklungslebenszyklus (SDLC) hinweg bringt:

  • Bauen. Docker ermöglicht es Entwicklungsteams, Zeit, Mühe und Geld zu sparen, indem sie ihre Anwendungen in einzelne oder mehrere Module dockerisieren . Indem der anfängliche Aufwand auf ein für eine Anwendung zugeschnittenes Image gelegt wird, kann ein Build-Zyklus die wiederkehrende Herausforderung vermeiden, mehrere Versionen von Abhängigkeiten zu haben, die in der Produktion Probleme verursachen könnten.
  • Testen. Mit Docker können Sie jede containerisierte Anwendung (oder ihre Komponenten) unabhängig testen, ohne andere Komponenten der Anwendung zu beeinträchtigen. Dies ermöglicht auch ein sicheres Framework, indem eng gekoppelte Abhängigkeiten weggelassen und eine überlegene Fehlertoleranz gewährleistet wird.
  • Bereitstellen und warten. Docker hilft, die Reibung zwischen Teams zu verringern, indem es sicherstellt, dass in jeder Entwicklungsphase konsistente Versionen von Bibliotheken und Paketen verwendet werden. Außerdem eliminiert das Deployment eines bereits getesteten Containers das Einführen von Fehlern im Build-Prozess und ermöglicht so eine effiziente Migration in die Produktion.

Wenn es um die unternehmensweite Nutzung von Containern geht, können Sie beruhigt sein, dass Docker mit vielen beliebten Tools funktioniert, darunter:

Docker-Alternativen

Obwohl Docker eine der beliebtesten Optionen für Anwendungscontainerisierung ist, gibt es Alternativen:

  • Containerd. Ursprünglich ein Tool, das Teil des Docker-Ökosystems war, hat sich diese Docker-Alternative zu einer eigenen High-Level-Containerlaufzeit entwickelt. Im Gegensatz zu Docker, das Netzwerk-Plugins und Overlays verwaltet, abstrahiert Containerd diese Funktionen und konzentriert sich auf das Ausführen und Verwalten von Images.
  • LXC/LXD Linux-Container. Eine Open-Source-Containerisierungsplattform mit einem Set von Sprachbindungen, Bibliotheken und Werkzeugen, die die Erstellung und Verwaltung virtueller Umgebungen ermöglicht. Da sie eng an das Linux-Ökosystem gebunden ist, ist ihre Verbreitungsrate vergleichsweise begrenzt.
  • Kern-OS rkt. Ausgesprochen als "rocket", ist dies eine weitere Open-Source-Software-Containerisierungsalternative zu Docker. Ein wesentliches Merkmal von rkt ist, dass es wohl eine sicherere Containerisierungsplattform ist, die einige der verletzlichen Schwächen im Design von Docker behebt.

Einige andere weniger bekannte Alternativen sind OpenVz und RunC.

Docker unterstützt geschäftliche Agilität

Die Idee einer agilen, konsistenten und unabhängigen Umgebung, die schnellere Builds und Anwendungsinteroperabilität ermöglichte, erwies sich in virtuellen Maschinen als herausfordernder als zunächst gedacht.

Dank Docker kann eine Organisation nun die Lücken füllen, die virtuelle Maschinen hinterlassen – ohne Rechenressourcen zu duplizieren und dabei Redundanz zu vermeiden. In der heutigen cloudnativen Umgebung sind Docker gleichbedeutend mit Anwendungseffizienz und Wartungsfähigkeit.

Kein Wunder, dass Organisationen Docker weiterhin übernehmen!

Verwandte Literatur

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus ITOps & DevOps

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.