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

Praktische Nutzung von Docker (Teil 1 - Einführung)

Teil 1:Einführung in die Terminologie

Vorwort

Es ist keine Seltenheit, dass Erstanwender neu eingeführter Konzepte und Technologien völlig verwirrt sind, wenn diese die Art und Weise der Entwicklung und Bereitstellung von Diensten grundlegend verändern können. Vor allem, wenn alle über etwas wie Docker sprechen und wie großartig und bahnbrechend es ist. Diese Verwirrung tritt auf, wenn wir Dinge früh ausprobieren und sie direkt testen, ohne das gesamte Konzept und den Hintergrund dieser neu eingeführten Technologie zu verstehen.

Aus diesem Grund haben Sie vielleicht den ganzen Trend der Linux-Container aufgegeben oder weil Sie einige kontroverse Artikel von Ja-Sagern und Nein-Sagern gelesen haben. In diesem ersten Teil einer Reihe von Artikeln werden wir unser Bestes geben, um die Dinge zu klären und alles für alle Entwickler, Systemadministratoren, Q/A-Ingenieure oder sogar Enthusiasten, die nur die richtige Inspiration für die Verwendung von Linux-Containern brauchen, in die richtige Perspektive zu rücken und lösen ihre speziellen IT-Probleme.

Wir werden von vorne beginnen, mit einigen notwendigen Beschreibungen der historischen Ereignisse und Konzepte, und dann werde ich zeigen, wie wir anfangen können, mit Docker-Containern zu arbeiten. Auf diese Weise können Sie verstehen, „was zur Erstellung von Containern geführt hat“, „was die Bausteine ​​sind“ und „wie sie funktionieren“.


Wie sind Container entstanden

Viele Jahre lang wurden Server unverändert mit einer einzigen Hardwarekonfiguration und einem einzigen Betriebssystem (kurz OS) verwendet, um Tausende von Websites und einige frühe Versionen von Unternehmenssoftware auf demselben Computer bereitzustellen.

Um die erforderliche Skalierung zu erreichen, mussten Unternehmen neue Hardware kaufen und die Schritte für neue Implementierungen sorgfältig planen. In dieser Zeit steckte die Automatisierung noch in den Kinderschuhen und die meisten Konfigurationen wurden von Hand vorgenommen.

Virtualisierung

Dann kam die Virtualisierung, die es Menschen ermöglichte, denselben Hardwareserver zu verwenden, sodass sie mehrere virtuelle Server für unterschiedliche Zwecke erstellen und einzeln verkaufen konnten. Dies hat nicht nur die Kosten für den Besitz von Serverhardware enorm gesenkt, sondern auch die Möglichkeit geschaffen, Hunderte von Serverinstanzen zu automatisieren und einfach zu verwalten.

Virtualisierung ist eigentlich das Zusammenstellen von Hardwarekomponenten wie CPU, RAM, Festplatten, Netzwerkkarten usw., die von einer speziellen Software emuliert werden. Es ist, als würde man einen PC mit seinen oben erwähnten Kernkomponenten innerhalb eines Betriebssystems bauen und sie so zusammenbauen, dass sie funktionieren, als wäre es ein echter PC. Auf diese Weise wird der virtuelle PC zu einem "Gast" in einem realen PC, der mit seinem Betriebssystem als Host bezeichnet wird.

Obwohl die Hardware-Virtualisierung vor ungefähr 10 Jahren eingeführt wurde, wurde sie von Entwicklern und Systemadministratoren auf verschiedenen Servertypen weit verbreitet, indem sie die KVM-Funktion (Kernel-based Virtual Machine) nutzten, die seit 2007 in den Linux-Kernel integriert ist. Mit Intels „VT -x“ und AMDs „AMD-V“-Erweiterungen, die helfen, eine beliebige Anzahl virtualisierter Betriebssysteme zu erstellen (nur durch die Hardwareressourcen begrenzt), könnte jeder Entwickler kostengünstig mehrere virtuelle Maschinen (kurz VM) mit Betriebssystemen erstellen, sogar mit verschiedenen Versionen von Sie. Auf diese Weise können sie ihre Anwendungen testen, ohne je nach benötigtem Betriebssystem ein ganz neues Rig oder mehrere davon kaufen zu müssen.

Einer der großen Vorteile der Virtualisierung ist die Möglichkeit, Snapshots zu erstellen. Ein Snapshot ist der Zustand einer virtuellen Maschine zu einem bestimmten Zeitpunkt. Sie können sich das als einen „eingefrorenen“ Zustand der virtuellen Maschine zu einem bestimmten Zeitpunkt vorstellen. Auf diese Weise kann ein Entwickler oder Systemadministrator eine virtuelle Maschine erstellen, ein bestimmtes Betriebssystem und die benötigten Tools installieren und einen Snapshot des Ganzen erstellen. Dann kann er mit dem Testen, Konfigurieren oder anderen Aufgaben beginnen, die er erledigen muss, und dann jederzeit sofort zum vorherigen Snapshot zurückkehren.

Auch virtuelle Maschinen können von einer Hostmaschine auf eine andere migriert werden und ihren Arbeitszustand ohne spezielle Konfiguration fortsetzen. Dies liegt daran, dass die gesamte virtuelle Maschine tatsächlich aus einigen riesigen Dateien besteht, die normalerweise als Bilder bezeichnet werden. Sie können sich Bilder wie die ISO-Datei Ihrer bevorzugten Linux-Distributionen vorstellen. Da die ISO-Datei alle wesentlichen Komponenten enthält, um tatsächlich ein ganzes Betriebssystem von einem Live-USB/DVD auszuführen, enthält ein Image einer virtuellen Maschine das Betriebssystem und virtuelle Hardwarekomponenten.

All dies hat eine ganze Branche von Hosting-Unternehmen für Virtual Private Server (VPS) geschaffen, bei denen die Kunden sofort vorkonfigurierte Images von Servern für jeden Zweck starten konnten. Diese VPS-Anbieter haben normalerweise 10 oder 20 Snapshots von VMs auf einem Haupthostserver, die auf Kundenanfrage mehrmals geklont werden, um ihnen die virtuellen Server bereitzustellen, die sie benötigen

Container

Wie Sie sich vorstellen können, ist eine virtuelle Maschine ein vollständiges Betriebssystem, das innerhalb eines Host-Betriebssystems ausgeführt wird. Obwohl die Gastbetriebssysteme isoliert sind, teilen und nutzen sie die Hardwareressourcen des Hostcomputers. Manchmal gibt es mehrere Gastbetriebssysteme, die den gleichen gesamten Stack eines bestimmten Betriebssystems ausführen.

Diese Situation bot den Linux-Kernel-Entwicklern und Hackern die Möglichkeit, auf eine Idee zu kommen, die als leichtgewichtige Prozessvirtualisierung bezeichnet wird. Anstatt also ein ganzes Betriebssystem zu verwenden, könnten sie die "unnötigen" Komponenten des virtuellen Betriebssystems reduzieren, um eine minimale Version davon zu erstellen. Dies führte zur Erstellung von LXC (Linux Containers).

Bevor wir tiefer graben, sollten wir erwähnen, dass die leichtgewichtige Prozessvirtualisierung nichts Neues ist. Solaris hat Zonen, BSD hat Gefängnisse und es gibt andere ähnliche Technologien wie OpenVZ. Das Problem ist, dass sie häufig ihren Namen oder Zweck ändern, wenn das gleiche Grundkonzept in anderen Projekten verwendet wird. Es stimmt, dass nicht alle gleich sind, aber die Grundprinzipien sind ziemlich gleich. Sie alle möchten eine Möglichkeit zur Bereitstellung von Softwarediensten isolieren, bereitstellen und erstellen, ohne den Aufwand, alles und jedes Mal von Grund auf neu erstellen zu müssen.

Das LXC-Projekt unterscheidet sich von den oben genannten virtuellen Maschinen darin, dass es sich um eine Virtualisierungsumgebung auf Betriebssystemebene und nicht um eine Hardware-Virtualisierungsumgebung handelt. Beide tun dasselbe, aber LXC bietet eine Virtualisierung auf Betriebssystemebene durch eine virtuelle Umgebung, die über einen eigenen Prozess- und Netzwerkbereich verfügt, anstatt eine vollwertige virtuelle Maschine zu erstellen. Folglich hat ein virtuelles LXC-Betriebssystem nur minimale Ressourcenanforderungen und startet in Sekundenschnelle.

Wie Sie im folgenden Bild sehen können, verwendet das virtuelle LXC-Ubuntu auf der linken Seite 11 MB in einer Standardinstallation.

Docker

Wie üblich hörten die Dinge nicht damit auf, die unnötigen Teile eines Betriebssystems zu entfernen. Verschiedene Technologien wurden zum Leben erweckt, indem die Grenzen der leichtgewichtigen Prozessvirtualisierung noch weiter verschoben wurden. Im Jahr 2013 führten die Entwickler von dotCloud (einem Unternehmen, das später seinen Namen in Docker Inc. änderte) Docker ein.

Docker ist eine Open-Source-Engine, deren Hauptaugenmerk auf der Automatisierung der Bereitstellung von Anwendungen in Softwarecontainern und der Automatisierung der Virtualisierung auf Betriebssystemebene unter Linux liegt. Ein Docker-Container benötigt oder enthält im Gegensatz zu einer virtuellen Maschine und lxc kein separates Betriebssystem. Stattdessen verlässt es sich auf die Funktionalität des Linux-Kernels und verwendet Ressourcenisolation.

Docker-Container werden aus Docker-Images erstellt (denken Sie an die Snapshots). Sie können sich einen Docker-Container als Live-Zustand einer Webanwendung vorstellen, die von einer ISO-Datei ausgeführt wird. Aber dieses Mal enthält die ISO, die in unserem Beispiel das Äquivalent des Docker-Images ist, nur die Anwendung und ihre Abhängigkeiten.

Eine großartige Funktion von Docker, die wir im zweiten Teil besprechen werden, ist die Docker-Datei. Eine Docker-Datei ist das Rezept, das alle notwendigen Schritte enthält, die zum Erstellen eines Docker-Images erforderlich sind. Es gibt buchstäblich Tonnen von „gebrauchsfertigen“ Docker-Dateien, die Sie anpassen können, indem Sie sie so verwenden, wie sie sind.

Zusammenfassung

Wie Sie sich vorstellen können, besteht der Umfang des Übergangs von vollwertigen Servern zur Betriebssystemvirtualisierung und dann zu Containern darin, die Last des Erstellens, Bereitstellens und Wartens eines gesamten Betriebssystems zu beseitigen, wenn nur die Anwendungsschicht benötigt wird.

Mit dieser Einführung haben wir versucht, Ihnen einige grundlegende Ereignisse vorzustellen, die uns zur Erstellung der Docker-Container geführt haben. Ich habe auch versucht, einige seiner Konzepte zu vereinfachen, damit Sie die Unterschiede zwischen den verschiedenen Virtualisierungstechnologien verstehen und wo sie anwendbar sind.

Der zweite Teil, der nächste Woche veröffentlicht wird, wird genau zeigen, wie wir Docker-Container auf praktische Weise installieren und verwenden können, also bleiben Sie dran.


Ubuntu
  1. So installieren und verwenden Sie Docker in Ubuntu 20.04

  2. So verwenden Sie Docker Compose

  3. So verwenden Sie ein Dockerfile zum Erstellen eines Docker-Images

  4. So verwenden Sie den Docker-Inspect-Befehl

  5. So konfigurieren Sie Docker für die Verwendung von Proxy

So installieren und verwenden Sie Docker Compose unter Debian 9

So installieren und verwenden Sie Docker-Compose unter CentOS 7

Docker:Wie man es praktisch nutzt - Teil 3

So installieren und verwenden Sie Podman (Docker-Alternative) unter Ubuntu 20.04

So installieren und verwenden Sie Docker unter Ubuntu 22.04

So installieren und verwenden Sie Docker unter AlmaLinux 8