GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Was ist Docker? Wie funktioniert es?

In diesem umfassenden Leitfaden habe ich erklärt, was Docker ist, seine Entwicklung, die zugrunde liegenden Kernkonzepte von Linux und wie es funktioniert.

Docker ist zum De-facto-Standard geworden, wenn es um containerbasierte Implementierungen geht. Docker ist die Basis für containerbasierte Orchestrierung von kleinen Implementierungen bis hin zu großen Unternehmensanwendungen.

Docker hat in der DevOps-Community schnell so viel Popularität und Akzeptanz erlangt, weil es für Portabilität entwickelt und für moderne Microservice-Architektur konzipiert wurde.

In diesem Blog erfahren Sie,

  1. Was ist Docker?
  2. Erfahren Sie mehr über Docker und sehen Sie, warum Docker vorteilhaft ist und sich von anderen Container-Technologien unterscheidet.
  3. Docker-Kernarchitektur und ihre Schlüsselkomponenten
  4. Containerentwicklung und das zugrunde liegende Konzept von Linux-Containern
  5. Was ist ein Container und mit welchen Linux-Features funktioniert er?
  6. Der Unterschied zwischen einem Prozess, Container und einer VM

Hier geht es darum, Ihre Grundlagen richtig zu machen, um zu verstehen, was Docker wirklich ist und wie es funktioniert.

Was ist Docker?

Docker ist ein beliebtes Open-Source-Projekt, das in go geschrieben und von Dotcloud (einem PaaS-Unternehmen) entwickelt wurde.

Es ist eine Container-Engine, die die Funktionen des Linux-Kernels verwendet wie Namespaces und Kontrollgruppen, um Container auf einem Betriebssystem zu erstellen. Man kann es also Virtualisierung auf Betriebssystemebene nennen.

Docker wurde ursprünglich auf Linux-Containern (LXC) aufgebaut . Später ersetzte Docker LXC durch seine Container-Laufzeit libcontainer (jetzt Teil von runc). Ich habe die Kernkonzepte von LXC und Containern gegen Ende des Artikels erklärt.

Sie fragen sich vielleicht, wie sich Docker von einem Linux-Container (LXC) unterscheidet, da alle Konzepte und Implementierungen ähnlich aussehen?

Abgesehen davon, dass Docker nur eine Container-Technologie ist, verfügt Docker über gut definierte Wrapper-Komponenten, die das Verpacken von Anwendungen vereinfachen . Vor Docker war es nicht einfach, Container auszuführen. Das heißt, es erledigt die gesamte Arbeit, um Ihre Anwendung von der Infrastruktur zu entkoppeln, indem alle Systemanforderungen der Anwendung in einen Container gepackt werden.

Wenn Sie beispielsweise eine Java-JAR-Datei haben, können Sie sie auf jedem Server ausführen, auf dem Java installiert ist. Auf die gleiche Weise können Sie, sobald Sie einen Container mit erforderlichen Anwendungen mit Docker gepackt haben, ihn auf jedem anderen Host ausführen, auf dem Docker installiert ist.

Wir werden Container zum Laufen bringen, indem wir ein paar Docker-Befehle und -Parameter ausführen.

Unterschied zwischen Docker und Container

Docker ist eine Technologie oder ein Tool, das entwickelt wurde, um Container effizient zu verwalten.

Kann ich also einen Container ohne Docker ausführen?

Ja! selbstverständlich. Sie können die LXC-Technologie verwenden, um Container auf Linux-Servern auszuführen. Darüber hinaus bieten die neuesten Tools wie Podman ähnliche Workflows wie Docker.

Dinge, die Sie über Docker wissen sollten:

  1. Docker ist nicht LXC
  2. Docker ist keine Lösung für virtuelle Maschinen.
  3. Docker ist kein Konfigurationsmanagementsystem und kein Ersatz für Chef, Puppet, Ansible usw.
  4. Docker ist keine Platform-as-a-Service-Technologie.
  5. Docker ist kein Container.

Was macht Docker so großartig?

Docker verfügt über einen effizienten Workflow zum Verschieben der Anwendung vom Laptop des Entwicklers über die Testumgebung in die Produktion. Sie werden mehr darüber verstehen, wenn Sie sich ein praktisches Beispiel zum Packen einer Anwendung in ein Docker-Image ansehen.

Wussten Sie, dass das Starten eines Docker-Containers weniger als eine Sekunde dauert? ?

Es ist unglaublich schnell und kann auf jedem Host mit kompatiblem Linux-Kernel ausgeführt werden. (Unterstützt auch Windows)

Hinweis: Sie können keinen Windows-Container auf einem Linux-Host ausführen, da es keine Linux-Kernel-Unterstützung für Windows gibt. Hier können Sie sich über Windows-Container informieren

Docker verwendet ein Copy-on-Write-Union-Dateisystem für seine Bildspeicherung. Wenn Änderungen an einem Container vorgenommen werden, werden daher nur die Änderungen mithilfe von „Copy“ im Schreibmodell auf die Festplatte geschrieben.

Mit Copy on Write verfügen Sie über optimierte gemeinsam genutzte Speicherebenen für alle Ihre Container.

Docker-Akzeptanzstatistik

Hier sind die Google-Trends-Daten zu Docker. Sie können sehen, dass es in den letzten fünf Jahren ein explodierendes Thema war.

Hier ist ein Umfrageergebnis von Datadog, das den Anstieg der Docker-Akzeptanz zeigt.

Docker Core-Architektur

In den folgenden Abschnitten werden die Docker-Architektur und die zugehörigen Komponenten betrachtet. Wir werden uns auch ansehen, wie die einzelnen Komponenten zusammenarbeiten, damit Docker funktioniert.

Die Docker-Architektur hat sich seit ihrer Einführung einige Male geändert. Als ich die erste Version dieses Artikels veröffentlichte, wurde Docker auf LXC aufgebaut

Hier sind einige bemerkenswerte architektonische Änderungen, die für Docker vorgenommen wurden

  1. Docker wechselte 2014 von LXC zu libcontainer
  2. runc – eine CLI zum Hochfahren von Containern, die allen OCI-Spezifikationen folgen.
  3. containerd – Docker trennte seine Containerverwaltungskomponente 2016 von containerd

OCI:Open Container Initiative ist ein offener Industriestandard für Container-Laufzeit und -Spezifikationen.

Als Docker ursprünglich gestartet wurde, hatte es eine monolithische Architektur. Jetzt ist es in die folgenden drei verschiedenen Komponenten unterteilt.

  1. Docker-Engine (dockerd)
  2. docker-containerd (containerd)
  3. docker-runc (runc)

Docker und andere große Organisationen haben zu einer Standard-Container-Laufzeit und Verwaltungsebenen beigetragen. Daher containerd und runc sind jetzt Teil der Cloud Native Foundation mit Mitwirkenden aus allen Organisationen.

Hinweis: Bei der Installation von Docker werden alle diese Komponenten installiert. Sie müssen es nicht separat installieren. Zur Erläuterung zeigen wir es als verschiedene Komponenten.

Sehen wir uns nun jede Docker-Komponente an.

Docker-Engine

Die Docker-Engine umfasst den Docker-Daemon, eine API-Schnittstelle und die Docker-CLI. Docker-Daemon (dockerd) läuft kontinuierlich als dockerd systemd-Dienst. Es ist für das Erstellen der Docker-Images verantwortlich.

Um Bilder zu verwalten und Container auszuführen, dockerd ruft den docker-containerd auf APIs.

docker-containerd (containerd)

containerd ist ein weiterer System-Daemon-Dienst, der für das Herunterladen der Docker-Images und deren Ausführung als Container verantwortlich ist. Es stellt seine API bereit, um Anweisungen von dockerd zu erhalten Dienst

docker-runc

runc ist die Containerlaufzeit, die für die Erstellung der für einen Container erforderlichen Namespaces und Cgroups verantwortlich ist. Anschließend führt es die Containerbefehle in diesen Namespaces aus. runc runtime ist gemäß der OCI-Spezifikation implementiert.

Lesen Sie diese hervorragende dreiteilige Blogpost-Reihe, um mehr über Container-Laufzeiten zu erfahren.

Wie funktioniert Docker?

Wir haben die Kernbausteine ​​von Docker gesehen.

Lassen Sie uns nun den Docker-Workflow mit den Docker-Komponenten verstehen.

Docker-Komponenten

Die folgende offizielle High-Level-Docker-Architektur Diagramm zeigt den allgemeinen Docker-Workflow.

Das Docker-Ökosystem besteht aus den folgenden vier Komponenten

  1. Docker-Daemon (dockerd)
  2. Docker-Client
  3. Docker-Images
  4. Docker-Registrierungen
  5. Docker-Container

Was ist ein Docker-Daemon?

Docker hat eine Client-Server-Architektur. Docker-Daemon (dockerd ) oder Server ist für alle Aktionen im Zusammenhang mit Containern verantwortlich.

Der Daemon empfängt die Befehle vom Docker-Client über die CLI oder die REST-API. Der Docker-Client kann sich auf demselben Host wie ein Daemon oder auf einem beliebigen anderen Host befinden.

Standardmäßig lauscht der Docker-Daemon auf docker.sock UNIX-Buchse. Wenn Sie einen Anwendungsfall für den Remotezugriff auf die Docker-API haben, müssen Sie sie über einen Hostport verfügbar machen. Ein solcher Anwendungsfall ist die Ausführung von Docker als Jenkins-Agenten.

Wenn Sie Docker innerhalb von Docker ausführen möchten, können Sie die docker.sock verwenden vom Host-Rechner.

Was ist ein Docker-Image?

Bilder sind die Grundbausteine ​​von Docker. Es enthält die Betriebssystembibliotheken, Abhängigkeiten und Tools zum Ausführen einer Anwendung.

Images können mit Anwendungsabhängigkeiten zum Erstellen von Containern vorkonfiguriert werden. Wenn Sie beispielsweise einen Nginx-Webserver als Ubuntu-Container ausführen möchten, müssen Sie ein Docker-Image mit der Nginx-Binärdatei und allen Betriebssystembibliotheken erstellen, die zum Ausführen von Nginx erforderlich sind.

Was ist ein Dockerfile?

Docker hat ein Konzept von Dockerfile die zum Erstellen des Bildes verwendet wird. Ein Dockerfile ist eine Textdatei, die einen Befehl (Anweisungen) pro Zeile enthält.

Hier ist ein Beispiel für ein Dockerfile.

Ein Docker-Image ist geschichtet organisiert. Jede Anweisung in einem Dockerfile wird eine Ebene in einem Bild hinzugefügt. Die oberste beschreibbare Ebene des Bildes ist ein Container.

Jedes Bild wird aus einem Basisbild erstellt.

Zum Beispiel, wenn Sie ein Basis-Image von Ubuntu verwenden und ein weiteres Image mit der Nginx-Anwendung erstellen können. Ein Basisimage kann ein übergeordnetes Image oder ein Image sein, das aus einem übergeordneten Image erstellt wurde. Sehen Sie sich seinen Docker-Artikel an, um mehr darüber zu erfahren.

Sie fragen sich vielleicht, woher dieses Basisimage (übergeordnetes Image) stammt? Es gibt Docker-Dienstprogramme zum Erstellen des anfänglichen übergeordneten Basisimages. Es nimmt die erforderlichen Betriebssystembibliotheken und backt sie in ein Basisimage. Sie müssen dies nicht tun, da Sie die offiziellen Basis-Images für Linux-Distributionen erhalten.

Die oberste Ebene eines Bildes ist beschreibbar und wird vom laufenden Container verwendet. Andere Ebenen im Bild sind schreibgeschützt.

Was ist eine Docker-Registrierung?

Es ist ein Repository (Speicher) für Docker-Images.

Eine Registry kann öffentlich oder privat sein. Beispielsweise stellt Docker Inc einen gehosteten Registrierungsdienst namens Docker Hub bereit. Es ermöglicht Ihnen, Bilder von einem zentralen Ort aus hoch- und herunterzuladen.

Hinweis: Wenn Sie Docker installieren, sucht es standardmäßig nach Images aus dem öffentlichen Docker-Hub, es sei denn, Sie geben in den Docker-Einstellungen eine benutzerdefinierte Registrierung an.

Andere Docker-Hub-Benutzer können auf alle Ihre Images zugreifen, wenn Ihr Repository öffentlich ist. Sie können in Docker Hub auch eine private Registrierung erstellen.

Docker-Hub verhält sich wie Git, wo Sie Ihre Images lokal auf Ihrem Laptop erstellen, festschreiben und dann an den Docker-Hub übertragen können.

Tipp: Wenn Sie Docker in Unternehmensnetzwerken/-projekten verwenden, richten Sie Ihre eigenen Docker-Registrierungen ein, anstatt den öffentlichen Docker-Hub zu verwenden. Alle Cloud-Anbieter haben ihre eigenen Containerregistrierungsdienste.

Was ist ein Docker-Container?

Docker-Container werden aus vorhandenen Images erstellt. Es ist eine beschreibbare Ebene des Bildes.

Wenn Sie versuchen, Bildebenen und einen Container in Beziehung zu setzen, sehen Sie hier, wie es für ein Ubuntu-basiertes Bild aussieht.

Sie können Ihre Anwendungen in einen Container packen, ihn festschreiben und zu einem Golden Image machen, um daraus weitere Container zu erstellen.

Container können gestartet, gestoppt, festgeschrieben und beendet werden. Wenn Sie einen Container beenden, ohne ihn festzuschreiben, gehen alle Containeränderungen verloren.

Idealerweise werden Container als unveränderliche Objekte behandelt, und es wird nicht empfohlen, Änderungen an einem laufenden Container vorzunehmen. Nehmen Sie stattdessen nur zu Testzwecken Änderungen an einem laufenden Container vor.

Zwei oder mehr Container können miteinander verknüpft werden, um eine abgestufte Anwendungsarchitektur zu bilden. Das Hosten hochskalierbarer Anwendungen mit Docker wurde jedoch mit dem Aufkommen von Container-Orchestrierungstools wie Kubernetes vereinfacht.

Entwicklung von Containern

Wenn Sie denken, dass die Containerisierung eine neue Technologie ist, ist sie es nicht. Google verwendet seine Container-Technologie seit Jahren in seiner Infrastruktur.

Das Konzept der Container begann bereits in den 2000er Jahren. Tatsächlich reichen die Wurzeln bis ins Jahr 1979 zurück, als wir chroot hatten, ein Konzept zum Ändern des Stammverzeichnisses eines Prozesses.

Hier ist eine Liste von containerbasierten Projekten, die im Jahr 2000 gestartet wurden.

Jahr Technologie
2000 FreeBSD Jails führten das Container-Konzept ein.
2003 Linux-V-Serverprojekt veröffentlicht mit dem Konzept der Virtualisierung auf Betriebssystemebene
2005 Solaris Zones – Virtualisierungsprojekt auf Betriebssystemebene eingeführt
2007 Google hat ein Dokument zu generischen Prozesscontainern veröffentlicht
2008 Die erste Version von LXC-Containern
2011 cloudfoundry kündigte Aufseher an
2013 lcmcty – Open-Source von Google
2013 Docker-Projekt wurde von DotCloud angekündigt
2014 Rakete. (rkt) angekündigt von CoreOS
2016 Windows-Containervorschau als Teil von Windows Server 2016 veröffentlicht

Was ist ein Linux-Container (LXC)?

Lassen Sie uns nun verstehen, was ein Linux-Container ist.

In einer typischen virtualisierten Umgebung laufen eine oder mehrere virtuelle Maschinen auf einem physischen Server mit einem Hypervisor wie Xen, Hyper-V usw.

Andererseits laufen Container auf dem Kernel des Betriebssystems. Sie können es Virtualisierung auf Betriebssystemebene nennen. Bevor Sie sich mit den zugrunde liegenden Containerkonzepten befassen, müssen Sie zwei Schlüsselkonzepte von Linux verstehen.

  1. Benutzerbereich: Der gesamte Code, der zum Ausführen von Benutzerprogrammen (Anwendungen, Prozessen) erforderlich ist, wird als Userspace bezeichnet. Wenn Sie eine Programmaktion initiieren, um beispielsweise eine Datei zu erstellen, führt der Prozess im Benutzerbereich einen Systemaufruf zum Kernal Space durch.
  2. Kernel-Speicherplatz :Dies ist das Herz des Betriebssystems, wo Sie den Kernel-Code haben, der mit der Systemhardware, dem Speicher usw. interagiert.

Ein Container ist ein Prozess.

Sie starten einen Prozess, wenn Sie eine Anwendung starten, beispielsweise einen Nginx-Webserver. Ein Prozess selbst ist eine in sich geschlossene Anweisung mit begrenzter Isolation.

Was wäre, wenn wir den Prozess nur mit Dateien und Konfigurationen isolieren könnten, die für die Ausführung und den Betrieb erforderlich sind? Das macht ein Container.

Ein Container ist ein Prozess mit ausreichender Isolierung von Userspace-Komponenten, um das Gefühl eines separaten Betriebssystems zu vermitteln.

Der übergeordnete Containerprozess kann einen untergeordneten Prozess haben. Man kann also sagen, dass ein Container auch eine Gruppe von Prozessen ist .

Wenn Sie beispielsweise einen Nginx-Dienst starten, startet dieser einen übergeordneten Nginx-Prozess. Der übergeordnete Prozess umfasst seine untergeordneten Prozesse wie Cache-Manager, Cache-Loader und Worker.

Wenn Sie also einen Nginx-Container starten, starten Sie einen Master-Nginx-Prozess in seiner isolierten Umgebung.

Ich werde Ihnen dies in den folgenden Abschnitten praktisch zeigen.

Jeder Container hat seinen isolierten Benutzerbereich, und Sie können mehrere Container auf einem einzigen Host ausführen.

Bedeutet das, dass ein Container das gesamte Betriebssystem enthält ?

Nein. Im Gegensatz zu einer VM mit ihrem Kernel enthält ein Container die erforderlichen Dateien für eine bestimmte Distribution und verwendet den gemeinsam genutzten Host-Kernel.

Interessanterweise können Sie verschiedene auf Linux-Distributionen basierende Container auf einem einzigen Host ausführen die denselben Kernelspace teilen.

Beispielsweise können Sie einen RHEL, CentOS, einen SUSE-basierten Container auf einem Ubuntu-Server ausführen. Es ist möglich, weil nur der Benutzerbereich für alle Linux-Distributionen unterschiedlich ist und der Kernel-Speicherplatz derselbe ist.

Grundlegendes Konzept von Linux-Containern

Das folgende Bild gibt Ihnen eine visuelle Darstellung von Linux-Continers.

Container werden mithilfe der zwei Linux-Kernel-Features namens Namespaces und Control Groups isoliert.

Eine reale Analogie wäre ein Mehrfamilienhaus. Obwohl es sich um ein einziges großes Gebäude handelt, ist jede Eigentumswohnung / Wohnung für einzelne Haushalte isoliert, die ihre eigene Identität mit Wasser-, Gas- und Stromzählern haben. Wir verwenden Beton, Stahlkonstruktionen und andere Baumaterialien, um diese Isolierung herzustellen. Sie haben keinen Einblick in andere Häuser, es sei denn, sie erlauben Ihnen den Zutritt.

In ähnlicher Weise können Sie dies einem einzelnen Host zuordnen, der mehrere Container enthält. Um Container mit ihrer CPU, ihrem Arbeitsspeicher, ihrer IP-Adresse, ihren Einhängepunkten und ihren Prozessen zu isolieren, benötigen Sie zwei Linux-Kernel-Funktionen Namensräume und Kontrollgruppen genannt.

Linux-Namespaces

Bei einem Container geht es darum, eine gut isolierte Umgebung zum Ausführen eines Dienstes (Prozesses) zu haben. Um dieses Isolationsniveau zu erreichen, sollte ein Container sein Dateisystem, seine IP-Adresse, Mount-Punkte, Prozess-IDs usw. haben. Sie können dies mit den Linux-Namespaces erreichen.

Namespaces sind für Container-Mount-Punkte, Benutzer, IP-Adresse, Prozessverwaltung usw. verantwortlich. Sie legen also im Wesentlichen Grenzen für die Container fest.

Im Folgenden sind die wichtigsten Namespaces in Linux

aufgeführt
  1. PID-Namensraum :Zuständig für die Isolierung des Prozesses (PID:Process ID).
  2. net-Namespace :Es verwaltet Netzwerkschnittstellen (NET:Networking).
  3. IPC-Namespace :Es verwaltet den Zugriff auf IPC-Ressourcen (IPC:InterProcess Communication).
  4. mnt-Namespace :Zuständig für die Verwaltung der Mount-Punkte des Dateisystems (MNT:Mount).
  5. uts-Namespace :Isoliert Kernel- und Versionskennungen. (UTS:Unix Timesharing System).
  6. usr-Namespace: Isoliert Benutzer-IDs. In einfachen Worten, es isoliert die Benutzer-IDs zwischen dem Host und dem Container.
  7. Cgroup-Namespace: Es isoliert die Kontrollgruppeninformationen vom Containerprozess

Unter Verwendung der obigen Namensräume kann ein Container seine Netzwerkschnittstellen, IP-Adresse usw. haben. Jeder Container hat seinen Namensraum und die Prozesse, die innerhalb dieses Namensraums laufen, haben keine Privilegien außerhalb seines Namensraums.

Interessanterweise können Sie die Namespaces in einer Linux-Maschine mit lsns auflisten Befehl.

Linux-Steuerungsgruppen

Wir geben beim Starten eines Dienstes kein Speicher- oder CPU-Limit an. Stattdessen überlassen wir es dem Kernel, Ressourcen für die Dienste zu priorisieren und zuzuweisen.

Sie können jedoch explizit CPU-Speichergrenzen für Ihre Dienste festlegen, indem Sie eine Linux-Kernel-Funktion namens CGroups verwenden . Es ist kein einfacher Ansatz; Sie müssen einige zusätzliche Konfigurationen und Optimierungen vornehmen, damit es funktioniert.

Da Sie mehrere Container innerhalb eines Hosts ausführen können, sollte es einen Mechanismus geben, um die Ressourcennutzung, den Gerätezugriff usw. zu begrenzen. Hier kommen Kontrollgruppen ins Spiel.

Linux-Kontrollgruppen verwalten die von einem Container verwendeten Ressourcen. Sie können CPU-, Arbeitsspeicher-, Netzwerk- und E/A-Ressourcen einer Container-Linux-Kontrollgruppe einschränken.

Was passiert also, wenn ich die CPU- und Speicherressourcen eines Containers nicht begrenze?

Ein einzelner Container kann alle Host-Ressourcen verwenden, wodurch andere Container aufgrund von Ressourcen-Nichtverfügbarkeit abstürzen.

Tools wie Docker abstrahieren alle komplexen Backend-Konfigurationen und lassen Sie diese Ressourcengrenzen mit einfachen Parametern angeben.

Warum sind Container besser als VMs?

Container haben einige entscheidende Vorteile gegenüber VMs. Werfen wir einen Blick darauf.

Ressourcennutzung &Kosten

  1. Sie können VMs verwenden, um Ihre Anwendungen unabhängig voneinander auszuführen, d. h. einen Dienst pro VM. Aber es kann immer noch zu wenig genutzt werden. Und die Größenänderung einer VM ist für eine Produktionsanwendung keine leichte Aufgabe.
  2. Auf der anderen Seite können Container mit sehr minimalen CPU- und Speicheranforderungen ausgeführt werden. Außerdem können Sie zur Anwendungstrennung sogar mehrere Container in einer VM ausführen. Außerdem dauert die Größenänderung eines Containers Sekunden.

Bereitstellung und Bereitstellung

  1. Das Bereitstellen einer VM und das Bereitstellen von Anwendungen darauf kann je nach Arbeitsablauf Minuten bis Stunden dauern. Selbst ein Rollback braucht Zeit.
  2. Aber Sie können einen Container in Sekundenschnelle bereitstellen und ihn auch in Sekundenschnelle zurücksetzen.

Driftmanagement

  1. Drift-Management in VMs ist nicht einfach. Sie benötigen eine vollwertige Automatisierung und Prozesse, um sicherzustellen, dass alle Umgebungen ähnlich sind. Das Befolgen von unveränderlichen Bereitstellungsmodellen vermeidet Abweichungen in VM-Umgebungen.
  2. Sobald das Image gesichert ist, ist es in allen Umgebungen für Container gleich. Für alle Änderungen müssen Sie also damit beginnen, Änderungen in dev env vorzunehmen und das Container-Image neu zu backen.

Docker-FAQs

Was ist der Unterschied zwischen containerd und runc?

containerd ist verantwortlich für die Verwaltung des Containers und runc ist verantwortlich für die Ausführung der Container (Erstellen von Namespaces, Cgroups und Ausführen von Befehlen innerhalb des Containers) mit den Eingaben von containerd

Was ist der Unterschied zwischen der Docker-Engine und dem Docker-Daemon?

Die Docker-Engine besteht aus dem Docker-Daemon, der Rest-Schnittstelle und der Docker-CLI. Docker-Daemon ist der Dockerd-Dienst von Systemd, der für das Erstellen der Docker-Images und das Senden von Docker-Anweisungen an die Containerd-Laufzeit verantwortlich ist.


Docker
  1. Was ist ein Makefile und wie funktioniert es?

  2. Was ist NGINX? Wie funktioniert es?

  3. Was ist ein Webserver und wie funktioniert ein Webserver?

  4. Was ist containerd und in welcher Beziehung steht es zu Docker und Kubernetes?

  5. So weisen Sie einem Docker-Container eine statische IP zu

Was ist VDI und wie funktioniert es?

Docker lernen:So erstellen Sie einen Docker-Container

So führen Sie PHPMyAdmin in einem Docker-Container aus

So führen Sie Grafana in einem Docker-Container aus

So richten Sie einen Apache Docker-Container ein

Wie funktioniert ein Load Balancer? Was ist Load-Balancing?