GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Was ist Docker?

Einführung

Docker ist eine der beliebtesten containerbasierten Plattformen, die die Aufmerksamkeit vieler Entwicklungsteams auf sich zieht. Immer mehr Unternehmen wechseln aufgrund seiner Zuverlässigkeit, Leistung und Funktionalität zu Docker.

Daher ist es wichtig, diese Open-Source-Containerisierungssoftware und die ihr zugrunde liegenden Komponenten zu verstehen.

In diesem Artikel erfahren Sie, was Docker ist, was die wichtigsten Komponenten von Docker sind und welche Vor- und Nachteile die Nutzung der Plattform hat.

Was ist Docker?

Docker ist eine Open-Source-Containerisierungsplattform, die zum Entwickeln, Bereitstellen und Verwalten von Anwendungen in leichtgewichtigen virtualisierten Umgebungen, sogenannten Containern, verwendet wird.

Es wird hauptsächlich als Softwareentwicklungsplattform für die Entwicklung verteilter Anwendungen verwendet, die in verschiedenen Umgebungen effizient arbeiten. Indem das Softwaresystem agnostisch gemacht wird, müssen sich Entwickler keine Gedanken über Kompatibilitätsprobleme machen. Das Verpacken von Apps in isolierte Umgebungen (Container) erleichtert auch die Entwicklung, Bereitstellung, Wartung und Verwendung von Anwendungen.

Da Docker Virtualisierung verwendet, um Container zum Speichern von Apps zu erstellen, scheint das Konzept virtuellen Maschinen ähnlich zu sein. Obwohl beide isolierte virtuelle Umgebungen darstellen, die für die Softwareentwicklung verwendet werden, gibt es wichtige Unterschiede zwischen Containern und VMs. Der wichtigste Unterschied besteht darin, dass Docker-Container leichter, schneller und ressourceneffizienter sind als virtuelle Maschinen.

Die Installation von Docker ist einfach. Eine Schritt-für-Schritt-Anleitung finden Sie unter:

So installieren Sie Docker unter UbuntuSo installieren Sie Docker unter CentOSSo installieren Sie Docker unter Debian

Was sind Container?

Docker-Container sind leichtgewichtige virtualisierte Laufzeitumgebungen zum Ausführen von Anwendungen. Jeder Container stellt ein Softwarepaket dar, das Code, Systemtools, Laufzeit, Bibliotheken, Abhängigkeiten und Konfigurationsdateien enthält, die zum Ausführen einer bestimmten Anwendung erforderlich sind. Sie sind unabhängig und isoliert vom Host und anderen Instanzen, die auf dem Host ausgeführt werden.

Container basieren auf Docker-Images. Sie erstellen einen Container, indem Sie ein Image auf der Docker Engine ausführen. Da dies die gebräuchlichsten Docker-Begriffe sind, stellen Sie sicher, dass Sie den Unterschied zwischen Docker-Images und Docker-Containern verstehen.

Dieselbe Hardware kann mehrere Container hosten. Im Gegensatz zu virtuellen Maschinen virtualisieren Container auf Anwendungsebene. Daher teilen sie sich den OS-Kernel mit dem Host und virtualisieren darauf ein Betriebssystem. Das bedeutet, dass Sie weniger Ressourcen verbrauchen und schlanke virtuelle Umgebungen verwalten, die schnell und einfach zu konfigurieren sind.

Container sind nicht nur systemunabhängig, sondern lassen sich auch schnell und einfach starten, konfigurieren, hinzufügen, stoppen und entfernen. Entwickler können in unterschiedlichen Umgebungen an derselben Anwendung arbeiten, da sie wissen, dass dies die Leistung nicht beeinträchtigt. Außerdem können sie mithilfe von Datenvolumen Daten zwischen Containern austauschen.

Stellen Sie sicher, dass Sie Best Practices für Docker-Container implementieren, um die Containerleistung zu maximieren.

Wofür wird Docker verwendet?

Docker wird verwendet für:

  • Ausführen mehrerer Workloads mit weniger Ressourcen.
  • Isolieren und Trennen von Anwendungen.
  • Standardisierung von Umgebungen zur Gewährleistung der Konsistenz über Entwicklungs- und Veröffentlichungszyklen hinweg.
  • Optimierung des Entwicklungslebenszyklus und Unterstützung von CI/CD-Workflows.
  • Entwicklung hochportabler Workloads, die auf Multi-Cloud-Plattformen ausgeführt werden können.

Zusätzlich wird es verwendet als:

  • Eine kostengünstige Alternative zu virtuellen Maschinen.
  • Ein Versionskontrollsystem für eine Anwendung.

Eine kurze Geschichte von Docker

Docker wurde als Open-Source-Projekt im März 2013 auf der PyCon vorgestellt. Bevor sich das Projekt auf Container konzentrierte, startete das Projekt 2008 als Platform-as-a-Service-Lösung namens DotCloud. Viele Entwickler zeigten jedoch großes Interesse speziell an der zugrunde liegenden Technologie von DotCloud – Software-Containern.

Seitdem hat Docker die Aufmerksamkeit vieler Technologieanbieter und namhafter Unternehmen auf sich gezogen.

Docker Core-Komponenten

Das Tool besteht aus mehreren Komponenten, die jeweils eine wichtige Rolle in der Plattform spielen.

Docker-Engine

Die Docker Engine (DE) wird auf der Host-Maschine installiert und stellt den Kern des Docker-Systems dar. Es ist ein leichtes Laufzeitsystem und die zugrunde liegende Client-Server-Technologie, die Container erstellt und verwaltet.

Docker Engine besteht aus drei Komponenten:

  • Server - der Docker-Daemon (dockerd), der für die Erstellung und Verwaltung von Containern verantwortlich ist.
  • Rest-API - Stellt die Kommunikation zwischen Programmen und Docker her und weist Dockerd an, was zu tun ist.
  • Befehlszeilenschnittstelle (CLI) - Wird zum Ausführen von Docker-Befehlen verwendet.

Docker-Images

Docker-Images sind Vorlagen, die zum Erstellen von Containern verwendet werden. Wie Snapshots für virtuelle Maschinen sind Docker-Images unveränderliche, schreibgeschützte Dateien, die aus dem Quellcode, Bibliotheken, Abhängigkeiten, Tools und allen anderen Dateien bestehen, die zum Ausführen einer Anwendung erforderlich sind. Jedes Image wird aus einer Docker-Datei erstellt, die spezifische Anweisungen zum Erstellen eines bestimmten Docker-Images enthält.

Sobald Sie das Erstellen von Docker-Images aus Dockerfiles beherrschen, können Sie Images und benutzerdefinierte Container einfacher und schneller erstellen.

Neben der Beschleunigung von Docker-Builds sind Images auch nützlich, um die Wiederverwendbarkeit zu erhöhen und die Festplattennutzung wesentlich zu verringern. Da Sie Ihre Container leicht und schnell halten möchten, ist es wichtig, kleine Images beizubehalten. Die Verwendung einer leichteren Image-Basis, die Vermeidung unnötiger Ebenen und die Verwendung der .dockerignore-Datei sind nur einige Möglichkeiten, Ihre Docker-Images klein zu halten.

Dockerfile

Ein Dockerfile ist ein Skript, das aus einer Reihe von Anweisungen zum Erstellen eines Docker-Images besteht. Diese Anweisungen umfassen die Angabe des Betriebssystems, der Sprachen, Umgebungsvariablen, Dateispeicherorte, Netzwerkports und anderer Komponenten, die zum Ausführen des Abbilds erforderlich sind. Alle Befehle in der Datei werden gruppiert und automatisch ausgeführt.

Ein Bild hat mehrere Ebenen. Sobald Sie ein Docker-Image ausführen, um einen Container zu erstellen, wird eine neue Lese-/Schreibebene hinzugefügt. Dies wird manchmal als Containerschicht bezeichnet. Die zusätzliche Ebene ermöglicht es Ihnen, Änderungen am Basis-Image vorzunehmen, die Sie festschreiben können, um ein neues Docker-Image für die zukünftige Verwendung zu erstellen.

Docker-Hub

Docker Hub ist das größte Cloud-basierte Repository von Container-Images, das von Docker bereitgestellt wird. Es stellt über 100.000 Images zur Verfügung, die von Open-Source-Projekten, Softwareanbietern und der Docker-Community erstellt wurden.

Die Plattform ermöglicht es Ihnen, Ihre Anwendungen schnell überall hin zu liefern, mit Teamkollegen zusammenzuarbeiten und Builds für eine schnellere Integration in eine Entwicklungspipeline zu automatisieren.

Wie bei GitHub pushen und ziehen Entwickler Container-Images von Docker Hub und entscheiden, ob sie öffentlich oder privat bleiben.

Docker-Volumes

Anstatt einem Image neue Ebenen hinzuzufügen, ist die Verwendung von Docker-Volumes eine bessere Lösung zum Aufbewahren von Daten, die von einem laufenden Container erzeugt werden. Dieses hilfreiche Tool ermöglicht es Benutzern, Daten zu speichern, zwischen Containern zu teilen und sie in neue Container einzubinden. Docker-Volumes sind unabhängig vom Container-Lebenszyklus, da sie auf dem Host gespeichert werden.

Es gibt verschiedene Möglichkeiten, ein Docker-Volume zu erstellen und zu mounten, während ein Container gestartet wird. Weitere Informationen finden Sie in Docker Volumes:So erstellen und starten Sie.

Docker Compose

Wenn Sie mehrere Container gleichzeitig ausführen und verwalten, ist Docker Compose ein nützliches Tool zur Vereinfachung des Prozesses. Es verknüpft mehrere Container, die für die Zusammenarbeit erforderlich sind, und steuert sie über einen einzigen koordinierten Befehl.

Docker Compose wird zum Starten, Ausführen, Kommunizieren und Schließen von Containern mit einem Befehl verwendet. Dies geschieht mithilfe einer YAML-Datei, die die Dienste der Anwendung konfiguriert.

Installieren Sie Docker Compose unter CentOSInstallieren Sie Docker Compose unter Ubuntu

Docker-Desktop

Docker Desktop, früher bekannt als Docker für Windows und Docker für Mac, ist eine Anwendung, mit der Sie innerhalb von Minuten Container unter Windows und Mac erstellen und ausführen können. Es ist eine einfache Möglichkeit, die gesamte Docker-Entwicklungsumgebung zu installieren und einzurichten. Es umfasst Docker Engine, Docker Compose, Docker CLI-Client, Docker Content Trust, Kubernetes und Credential Helper.

Das Tool wird zum Erstellen und Freigeben von containerisierten Anwendungen und Microservices in mehreren Sprachen und Frameworks auf jeder Cloud-Plattform verwendet.

Weitere Informationen finden Sie in der offiziellen Docker-Dokumentation auf Docker Desktop.

Docker-Vorteile

  • Konsistenz . Docker stellt die Zuverlässigkeit sicher, dass Ihre App in mehreren Umgebungen gleich ausgeführt wird. Entwickler, die auf verschiedenen Computern und Betriebssystemen arbeiten, können ohne Umgebungsprobleme an derselben Anwendung arbeiten.
  • Automatisierung . Die Plattform ermöglicht es Ihnen, mühsame, sich wiederholende Aufgaben zu automatisieren und Jobs ohne manuelles Eingreifen zu planen.
  • Schnellere Bereitstellungen . Da Container das Betriebssystem virtualisieren, gibt es beim Starten von Containerinstanzen keine Startzeit. Daher können Sie Bereitstellungen in Sekundenschnelle durchführen. Darüber hinaus können Sie vorhandene Container freigeben, um neue Anwendungen zu erstellen.
  • Unterstützung von CI/CD . Docker funktioniert gut mit CI/CD-Praktiken, da es Bereitstellungen beschleunigt, Updates vereinfacht und Teamkollegen ermöglicht, effizient zusammenzuarbeiten.
  • Rollbacks und Bildversionskontrolle . Ein Container basiert auf einem Docker-Image, das mehrere Ebenen haben kann, die jeweils Änderungen und Aktualisierungen auf der Basis darstellen. Diese Funktion beschleunigt nicht nur den Build-Prozess, sondern bietet auch Versionskontrolle über den Container. Dadurch können Entwickler bei Bedarf zu einer früheren Version zurückkehren.
  • Modularität . Container sind unabhängige und isolierte virtuelle Umgebungen. In einer Multi-Container-Anwendung hat jeder Container eine bestimmte Funktion. Durch die Trennung der App können Entwickler ganz einfach an einem bestimmten Teil arbeiten, ohne die gesamte App herunterfahren zu müssen.
  • Ressourcen- und Kosteneffizienz . Da Container keine Gastbetriebssysteme enthalten, sind sie viel leichter und kleiner als VMs. Sie beanspruchen weniger Speicherplatz und verwenden Komponenten dank Datenmengen und Bildern wieder. Außerdem benötigen Container keine großen physischen Server, da sie vollständig in der Cloud ausgeführt werden können.

Docker-Nachteile

  • Keine grafische Benutzeroberfläche . Docker ist nicht die beste Wahl, wenn Sie Apps ausführen möchten, die eine grafische Oberfläche erfordern. Es dient hauptsächlich zum Hosten von Anwendungen, die auf der Befehlszeile ausgeführt werden.
  • Sicherheitsprobleme . Obwohl Docker Sicherheit bietet, indem Container vom Host und voneinander isoliert werden, gibt es bestimmte Docker-spezifische Sicherheitsrisiken. Bei der Arbeit mit Containern können viele potenzielle Sicherheitsprobleme auftreten. Stellen Sie daher sicher, dass Sie die besten Docker-Sicherheitspraktiken anwenden, die Ihnen helfen können, Angriffe und Rechteverletzungen zu verhindern.
  • Lernkurve . Selbst mit der VM-Infrastruktur erfahrene Entwickler brauchen etwas Zeit, um sich an Docker-Konzepte und deren Funktionsweise zu gewöhnen. Berücksichtigen Sie beim Umstieg auf Docker unbedingt die notwendige Lernkurve.

Ubuntu
  1. Was ist ein Docker-Container:Eine Einführung für Anfänger

  2. Was ist der Unterschied zwischen LXC-, LXD- und Docker-Containern?

  3. Was ist Docker (und Linux-Container?)

  4. So verwenden Sie Docker Compose

  5. So verbinden Sie Docker-Container

Traefik für Docker-Container auf Ubuntu

Was ist ein Docker-Image-Manifest?

So führen Sie Docker-Container aus

So entfernen Sie Docker-Container

So stoppen Sie Docker-Container

Was tun, wenn ein Docker-Container sofort beendet wird