Docker ist eine Softwareplattform, mit der Sie Anwendungen schnell erstellen, testen und bereitstellen können. Docker verpackt Software in standardisierte Einheiten, sogenannte Container, die alles enthalten, was die Software zum Ausführen benötigt, einschließlich Bibliotheken, Systemtools, Code und Laufzeit.

Docker, eine Teilmenge des Moby-Projekts, ist ein Software-Framework zum Erstellen, Ausführen und Verwalten von Containern auf Servern und in der Cloud. Der Begriff „Docker“ kann sich entweder auf die Tools (die Befehle und einen Daemon) oder auf das Dockerfile-Dateiformat beziehen.

Wenn Sie früher eine Webanwendung ausführen wollten, kauften Sie einen Server, installierten Linux, richteten einen LAMP-Stack ein und führten die App aus. Wenn Ihre App populär wurde, haben Sie einen guten Lastausgleich geübt, indem Sie einen zweiten Server eingerichtet haben, um sicherzustellen, dass die Anwendung nicht bei zu viel Datenverkehr abstürzt.
Die Zeiten haben sich jedoch geändert, und statt sich auf einzelne Server zu konzentrieren, ist das Internet auf Arrays von voneinander abhängigen und redundanten Servern in einem System aufgebaut, das allgemein als „Cloud“ bezeichnet wird. Dank Innovationen wie Linux-Kernel-Namespaces und Cgroups konnte das Konzept eines Servers von den Einschränkungen der Hardware befreit werden und wurde stattdessen im Wesentlichen zu einem Stück Software. Diese softwarebasierten Server werden Container genannt und sind eine hybride Mischung aus dem Linux-Betriebssystem, auf dem sie laufen, und einer hyperlokalisierten Laufzeitumgebung ( dem Inhalt des Containers ).

Container verstehen

Die Containertechnologie lässt sich in drei verschiedene Kategorien einteilen:

1. Builder: ein Tool oder eine Reihe von Tools zum Erstellen eines Containers, z. B. Distrobuilder für LXC oder eine Dockerfile für Docker.

2. Engine: eine Anwendung, die zum Ausführen eines Containers verwendet wird. Für Docker bezieht sich dies auf den Docker-Befehl und den Dockerd-Daemon. Für andere kann sich dies auf den Containerd-Daemon und relevante Befehle (z. B. podman) beziehen.

3. Orchestrierung: Technologie zur Verwaltung vieler Container, einschließlich Kubernetes und OKD.

Container liefern oft sowohl eine Anwendung als auch eine Konfiguration, was bedeutet, dass ein Systemadministrator nicht so viel Zeit damit verbringen muss, eine Anwendung in einem Container auszuführen, als wenn eine Anwendung aus einer herkömmlichen Quelle installiert wird. Dockerhub und Quay.io sind Repositories, die kopierbare Images zur Verwendung durch Container-Engines anbieten.

Der größte Vorteil von Containern ist jedoch ihre Fähigkeit, elegant zu „sterben“ und wieder aufzutauchen, wenn der Lastausgleich dies erfordert. Unabhängig davon, ob der Ausfall eines Containers durch einen Absturz verursacht wird oder weil er einfach nicht mehr benötigt wird, weil der Serververkehr gering ist, sind Container in der Anschaffung „billig“ und so konzipiert, dass sie nahtlos erscheinen und verschwinden. Da Container kurzlebig sein und so oft wie nötig neue Instanzen erzeugen sollen, wird erwartet, dass ihre Überwachung und Verwaltung nicht von einem Menschen in Echtzeit, sondern automatisiert erfolgt.

Alternativen zu Docker

Linux-Container haben einen massiven Wandel im Hochverfügbarkeits-Computing ermöglicht. Es gibt viele Toolsets, mit denen Sie Dienste oder sogar Ihr gesamtes Betriebssystem in Containern ausführen können. Die Open Container Initiative (OCI) ist eine Organisation für Industriestandards, die Innovationen fördert und gleichzeitig die Gefahr einer Anbieterbindung vermeidet. Dank OCI haben Sie die Wahl bei der Auswahl einer Container-Toolchain, einschließlich Docker, CRI-O, Podman, LXC und anderen.

Container-Dienstprogramme

Container können sich konstruktionsbedingt schnell vermehren, unabhängig davon, ob Sie viele verschiedene Dienste oder viele Instanzen einiger weniger Dienste ausführen. Sollten Sie sich entscheiden, Dienste in Containern auszuführen, benötigen Sie wahrscheinlich Software, die zum Hosten und Verwalten dieser Container entwickelt wurde. Dies wird allgemein als Container-Orchestrierung bezeichnet. Während Docker und andere Container-Engines wie Podman und CRI-O gute Dienstprogramme für Containerdefinitionen und -images sind, ist es ihre Aufgabe, Container zu erstellen und auszuführen, und nicht dabei, Ihnen bei der Organisation und Verwaltung zu helfen. Projekte wie Kubernetes und OKD bieten Container-Orchestrierung für Docker, Podman, CRI-O und mehr.

Wenn Sie eines davon in der Produktion ausführen, möchten Sie möglicherweise in die Unterstützung durch ein nachgelagertes Projekt wie OpenShift (das auf OKD basiert) investieren.

Was Sie über die Docker Community Edition wissen müssen

Die Open-Source-Komponenten von Docker sind in einem Produkt namens Docker Community Edition oder Docker-ce zusammengefasst. Dazu gehören die Docker-Engine und eine Reihe von Terminalbefehlen, die Administratoren bei der Verwaltung aller von ihnen verwendeten Docker-Container unterstützen. Sie können diese Toolchain installieren, indem Sie im Paketmanager Ihrer Distribution nach Docker suchen.

Warum Docker verwenden?

Eines der großartigen Dinge an Open Source ist, dass Sie die Wahl haben, welche Technologie Sie zur Erfüllung einer Aufgabe verwenden. Die Docker-Engine kann für Einzelentwickler nützlich sein, die eine schlanke, saubere Umgebung zum Testen benötigen, jedoch keine komplexe Orchestrierung benötigen.

Wenn Docker auf Ihrem System verfügbar ist und jeder um Sie herum mit der Docker-Toolchain vertraut ist, dann ist Docker Community Edition (docker-ce) eine gute Möglichkeit, mit Containern zu beginnen.

Dockerhub und Quay.io sind Repositories, die Images für die Container-Engine Ihrer Wahl anbieten. Wenn die Docker Community Edition nicht verfügbar ist oder nicht unterstützt wird, ist Podman eine kluge Option.
Die Bemühungen, sicherzustellen, dass sich offene Standards durchsetzen, dauern an. Daher sollte die wichtige langfristige Strategie für Ihre Containerlösung darin bestehen, bei Projekten zu bleiben, die Open Source und offene Standards respektieren und fördern. Proprietäre Extras mögen auf den ersten Blick verlockend erscheinen, aber wie so oft verliert man die Flexibilität der Wahl, wenn man seine Tools auf ein Produkt festlegt, das keine Migration zulässt. Container können befreiend sein, solange sie befreit sind.

Übersetzer : Georg von Nessler, mit der herrlichen Hilfe von Google Translate

Creative Commons License

Dieses Werk ist unter der Creative Commons Attribution-Share Alike 4.0 International License lizenziert.

Gutes Erklär – Video in deutsch >>  https://www.youtube.com/watch?v=DESdVoKhIxY

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert