Docker: Programm zum Virtualisieren von Programmen in Containern

Docker ist der plattformübergreifende OpenSource projizieren das automatisiert die Bereitstellung von Anwendungen . Behälter Verwendung von Ressourcenisolation Funktionen, sodass Sie nicht mehrere ressourcenintensive virtuelle Maschinen verwenden müssen, um dieselbe Aufgabe auszuführen. Dies reduziert den Overhead und erhöht die Skalierbarkeit und Portabilität.

In kurzer Zeit hat sich Docker weltweit zur Hauptanwendung für das Containermanagement entwickelt und verfügt in Kombination mit anderen Diensten wie Kubernetes über Funktionen, die nahezu alle Anforderungen abdecken, mit Ausnahme einiger spezifischer Fälle, auf die wir seitdem näher eingehen werden Docker ist aufgrund seines Designs nicht für alle Anwendungen geeignet.

Docker: Programm zum Virtualisieren von Programmen in Containern

Zu Beginn ein wenig Geschichte

Die Idee von Docker entstand aus der Hand von Solomon Hykes als internes Projekt innerhalb von dotCloud (gegründet 2010), einem Unternehmen, das sich auf die Erstellung eines PaaS konzentrierte. Es wurde in Docker Inc. umbenannt, das derzeitige Unternehmen, das Docker entwickelt Hub und Docker für Desktop.

In seinen Anfängen verwendete es LXC als Ausführungsumgebung, die später durch eine eigene Bibliothek ersetzt wurde, die in der Go-Programmiersprache libcontainer geschrieben war, um es in ein Multiplattform-Programm zu konvertieren.

Was ist Docker und wofür wird es verwendet?

Docker

Seine Funktion stimmt mit dem Slogan überein und besteht darin, jede Anwendung in jedem Betriebssystem zu entwickeln, zu senden und auszuführen. Dies ist eine flexible Alternative mit einem wesentlich geringeren Ressourcenbedarf als herkömmliche VMs, bei denen es sich um Emulationen von Hardwarekomponenten handelt, die auf virtuellen Maschinen basieren.

Es handelt sich um eine containergestützte Virtualisierungstechnologie, die den Host-Kernel gemeinsam nutzt, um isolierte Prozesse im Benutzerbereich auszuführen, ohne dass ein anderes Betriebssystem ausgeführt werden muss, wodurch unnötige Ressourcen verbraucht werden.

Unterschiede zu herkömmlichen virtuellen Maschinen

Container-gegen-virtuelle-Maschinen

Wir sparen alle von virtualisierten Betriebssystemen verwendeten Ressourcen und können unsere Container auch auf jedem Betriebssystem ausführen, auf dem Docker installiert ist, um unsere Anwendungen auszuführen.

Beachten Sie, dass Docker nicht für alle Arten von Anwendungen gültig ist, da es für Mikrodienste ohne grafische Benutzeroberflächen vorgesehen ist. Daher ist Docker im Vergleich zur Verwendung virtueller Maschinen nicht immer die beste Option, da wir möglicherweise eine grafische verwenden möchten Schnittstelle und dann die Verwendung einer virtuellen Maschine wäre eine bessere Option. Darüber hinaus ist die Persistenz von Docker nicht vorhanden. Wenn wir also einen der Container ausschalten, verschwinden alle darin enthaltenen Informationen. Für diese Art von Dienst ist es daher besser, einen separaten Dienst oder eine virtuelle Maschine zu verwenden für diesen Zweck.

Was macht Docker aus?

Es besteht aus drei grundlegenden Komponenten: der Docker-Engine, den Docker-Images und dem Docker Hub.

Das Dockermotor ist eine Client-Server-Anwendung mit 3 grundlegenden Komponenten:

  • Das Docker Daemon (Server) Dies ist der Prozess, der im Hintergrund auf dem Host ausgeführt wird und für die Erstellung und Verwaltung der Images, Container und Netzwerkprozesse verantwortlich ist.
  • Das REST API ist eine SICH AUSRUHEN- basierte Programmierschnittstelle, die für die Interaktion und die Übermittlung von Anweisungen an den Dämon verantwortlich ist.
  • Das Terminal (Client) ist verantwortlich für die Bereitstellung der Schnittstelle für die Interaktion mit dem Dämon über die REST-API mit Skripten oder Befehlen.

Docker-Bilder sind die Container, die der Benutzer vom Docker Hub erstellt oder herunterlädt und die Ressourcen enthalten, die zum Ausführen einer bestimmten Anwendung und der auszuführenden Anwendung erforderlich sind.

Das Docker-Hub bietet Docker Bilder, um Benutzern das Herunterladen von Containern mit vorgefertigten Diensten zu erleichtern, was viel Zeit spart. Es ist eine Online-Bibliothek mit vielen öffentlichen Repositories, in der Sie alles finden, was Sie für den Einstieg benötigen, obwohl es auch private Repositories gibt.

Welche Vorteile hat es?

Docker-Run

Das Wichtigste ist in der Skalierbarkeit da die Behälter leicht reproduzierbar sind und somit hoch liefern Verfügbarkeit Wenn einer ausfällt, gibt es immer noch andere Container, die den Service anbieten. Darüber hinaus kann es in allen Betriebssystemen verwendet werden, auf denen die Docker-Plattform installiert ist Portabilität , da es in einem erstellt werden kann Ubuntu Focal Fossa zum Beispiel und bringen Sie diesen Service dann zu einem Windows Server und es funktioniert perfekt wie auf dem Computer, auf dem es erstellt wurde.

Der große Vorteil ist, dass Anwendungen mit unterschiedlichen Anforderungen mit basic isoliert ausgeführt werden können Linux Kernelfunktionen, die Cgroups und Namespaces sind.

Gruppen den Zugriff von Prozessen auf die Verwendung von Speicher beschränken, CPU und Eingabe und Ausgabe, wodurch verhindert wird, dass verschiedene Prozesse Ressourcen aus anderen Prozessen verbrauchen.

Namensräume Begrenzen Sie Prozesse und Threads, indem Sie sie mithilfe von 5 spezifischen Feldern kapseln:

  • UTS oder Systemkennung werden verwendet, um den Containern die Domäne und den Computernamen zuzuweisen.
  • PID oder Prozesskennung wird in jedem Docker-Container mit einem separaten Namespace verwendet, sodass alle Prozesse außerhalb des Containers nicht betroffen sind, wenn sie dieselbe PID haben, wodurch Konflikte vermieden werden, da sie gekapselt sind.
  • IPC oder der Kommunikator zwischen Prozessen ist dafür verantwortlich, die Prozesse in jedem Container zu isolieren und die Kommunikation mit externen Prozessen zu vermeiden.
  • NET oder Netzwerkressourcen sind dafür verantwortlich, jedem Container die Netzwerkressourcen zuzuweisen, die für die Konnektivität erforderlich sind.
  • MNT Der Mount-Punkt des Dateisystems ist dafür verantwortlich, den reservierten Speicherplatz des Containers so zu isolieren, dass nur vom Docker-Container aus auf ihn zugegriffen werden kann

Wie bereits erwähnt, verwendete Docker in seinen Anfängen LXC, das später durch libcontainer ersetzt wurde, wodurch Docker plattformübergreifend wird und sowohl unter Linux und Windows als auch unter MacOS ausgeführt werden kann, da LXC weiterhin verwendet wird. Es kann nur in Linux-Umgebungen ausgeführt werden.

Welche Nachteile hat es?

Es hat 5 Hauptnachteile zu berücksichtigen, wenn wir Docker für die Virtualisierung von Anwendungen in Containern verwenden:

Die Ausführungsgeschwindigkeit ist nicht dieselbe, als ob wir die Anwendung direkt auf dem Host ausführen würden . Container reduzieren zwar den Overhead im Vergleich zur Verwendung eines virtualisierten Betriebssystems erheblich, die Ausführung derselben Anwendung erfolgt jedoch nicht mit der gleichen Geschwindigkeit, als würde sie direkt auf dem Host ausgeführt.

Das Container-Ökosystem ist gebrochen und einige der Container funktionieren nicht mit anderen wie Red Hat OpenShift, das nur mit Kubernetes funktioniert.

Die richtigen Docker für dauerhaften Speicher sollte keine Option sein Aufgrund der Art und Weise, wie ein Container nach dem Verschwinden entworfen wurde, verschwindet auch sein gesamter Inhalt, sodass sich der gesamte persistente Speicher einer Datenbank niemals in einem Docker-Container befinden sollte, da das Risiko eines Informationsverlusts besteht.

Anwendungen mit grafischen Oberflächen funktionieren nicht gut weil Docker per Design keine grafische Oberfläche benötigt, da es sich an Serveranwendungen orientiert.

Nicht alle Anwendungen profitieren von der Verwendung von Containern weil sie hauptsächlich für Mikrodienste bestimmt sind.

Schwierigkeit

schwierige Medien

Mit dem Lernwillen ist die Schwierigkeit etwas größer als bei nicht containerbasierter Virtualisierung, da es keine grafische Benutzeroberfläche gibt, wie sie Virtualisierungslösungen für Betriebssysteme wie QEMU, HyperV, VMWare oder VirtualBox bieten, wird es vielleicht ein wenig anfangs schwieriger. Aber wie wir bereits besprochen haben, haben diese nicht containerbasierten Virtualisierungstechniken einen viel geringeren Overhead und bieten einen großen Vorteil gegenüber der SO-Virtualisierung, und es gibt viele Tutorials und Videos im Internet auf YTube, um Docker in kürzester Zeit und mit wenig Aufwand kennenzulernen.

Herunterladen

Wir haben die Möglichkeit, Docker kostenlos von der herunterzuladen Entwickler-Website und wir werden auch Zugang zu vielen Dokumentationen haben, die uns zeigen, wie sie verwendet werden.