Docker lernen, Teil 6: Arbeiten mit Daten

Im heutigen Teil der Übersetzung einer Reihe von Materialien zu Docker werden wir über die Arbeit mit Daten sprechen. Insbesondere über Docker-Volumes. In diesen Materialien haben wir ständig Docker-Programmiermechanismen mit verschiedenen essbaren Analogien verglichen. Von dieser Tradition werden wir hier nicht abweichen. Lassen Sie Daten in Docker Gewürze sein. Es gibt viele Gewürze auf der Welt und Docker bietet viele Möglichkeiten, mit Daten zu arbeiten.

Teil 1: Die Grundlagen
Teil 2: Begriffe und Konzepte
Teil 3: Docker-Dateien
Teil 4: Reduzieren der Größe von Bildern und Beschleunigen ihrer Zusammenstellung
Teil 5: Befehle
Teil 6: Arbeiten mit Daten

Docker lernen, Teil 6: Arbeiten mit Daten

Bitte beachten Sie, dass dieses Material mit der Docker-Engine-Version 18.09.1 ​​und der API-Version erstellt wurde 1.39.

Daten in Docker können entweder temporär oder dauerhaft gespeichert werden. Beginnen wir mit temporären Daten.

Temporäre Datenspeicherung

Es gibt zwei Möglichkeiten, temporäre Daten in Docker-Containern zu verwalten.

Standardmäßig werden Dateien, die von einer in einem Container ausgeführten Anwendung erstellt wurden, in einer beschreibbaren Containerschicht gespeichert. Damit dieser Mechanismus funktioniert, muss nichts Besonderes konfiguriert werden. Es fällt billig und fröhlich aus. Die Anwendung muss lediglich die Daten speichern und ihre eigene Arbeit fortsetzen. Wenn der Container jedoch nicht mehr existiert, verschwinden auch die auf so einfache Weise gespeicherten Daten.

Die temporäre Dateispeicherung in Docker ist eine weitere Lösung, die sich für Fälle eignet, in denen ein höheres Leistungsniveau erforderlich ist, als dies mit dem standardmäßigen temporären Datenspeichermechanismus möglich ist. Wenn Ihre Daten nicht länger gespeichert werden müssen, als der Container vorhanden ist, können Sie eine Verbindung zum Container tmpfs herstellen – einem temporären Informationsspeicher, der den RAM des Hosts nutzt. Dadurch wird die Ausführung von Datenschreib- und Lesevorgängen beschleunigt.

Es kommt häufig vor, dass die Daten auch dann gespeichert werden müssen, wenn der Container nicht mehr existiert. Dazu benötigen wir persistente Datenspeichermechanismen.

Permanente Datenspeicherung

Es gibt zwei Möglichkeiten, die Datenlebensdauer länger als die Containerlebensdauer zu machen. Eine Möglichkeit besteht darin, die Bind-Mount-Technologie zu verwenden. Mit diesem Ansatz können Sie beispielsweise einen realen Ordner in den Container einbinden. Auch Prozesse außerhalb von Docker können mit den in einem solchen Ordner gespeicherten Daten arbeiten. So schau tmpfs-Mount- und Bind-Mount-Technologie.

Docker lernen, Teil 6: Arbeiten mit Daten
tmpfs mounten und mounten

Die Nachteile der Verwendung der Bind-Mount-Technologie bestehen darin, dass ihre Verwendung die Datensicherung, Datenmigration und den Datenaustausch zwischen mehreren Containern erschwert. Es ist viel besser, Docker-Volumes für die dauerhafte Datenspeicherung zu verwenden.

Volumes Docker

Ein Volume ist ein Dateisystem, das sich außerhalb von Containern auf dem Host-Computer befindet. Volumes werden von Docker erstellt und verwaltet. Hier sind die Haupteigenschaften von Docker-Volumes:

  • Sie sind ein Mittel zur dauerhaften Speicherung von Informationen.
  • Sie sind unabhängig und von Containern getrennt.
  • Sie können von verschiedenen Containern gemeinsam genutzt werden.
  • Sie ermöglichen Ihnen ein effizientes Lesen und Schreiben von Daten.
  • Volumes können auf den Ressourcen eines Remote-Cloud-Anbieters platziert werden.
  • Sie können verschlüsselt werden.
  • Ihnen können Namen gegeben werden.
  • Der Container kann dafür sorgen, dass das Volume vorab mit Daten gefüllt wird.
  • Sie eignen sich zum Testen.

Wie Sie sehen, verfügen Docker-Volumes über erstaunliche Eigenschaften. Lassen Sie uns darüber sprechen, wie man sie erstellt.

Volumes erstellen

Volumes können mithilfe von Docker- oder API-Anfragen erstellt werden.

Hier ist eine Anweisung in der Docker-Datei, mit der Sie beim Starten eines Containers ein Volume erstellen können.

VOLUME /my_volume

Bei Verwendung einer ähnlichen Anweisung erstellt Docker nach dem Erstellen des Containers ein Volume mit den Daten, die bereits am angegebenen Speicherort vorhanden sind. Beachten Sie, dass Sie beim Erstellen eines Volumes mithilfe einer Docker-Datei nicht von der Notwendigkeit befreit sind, den Bereitstellungspunkt des Volumes anzugeben.

Sie können Volumes auch in einer Docker-Datei im JSON-Format erstellen.

Darüber hinaus können Volumes mithilfe von Befehlszeilentools erstellt werden, während der Container ausgeführt wird.

Arbeiten mit Volumes über die Befehlszeile

▍Volume-Erstellung

Mit dem folgenden Befehl können Sie ein eigenständiges Volume erstellen:

docker volume create —-name my_volume

▍Informieren Sie sich über Bände

Um eine Liste der Docker-Volumes anzuzeigen, verwenden Sie den folgenden Befehl:

docker volume ls

Sie können einen bestimmten Band wie folgt erkunden:

docker volume inspect my_volume

▍Ein Volume löschen

Sie können ein Volume wie folgt löschen:

docker volume rm my_volume

Um alle Volumes zu entfernen, die nicht von Containern verwendet werden, können Sie auf den folgenden Befehl zurückgreifen:

docker volume prune

Bevor Sie Volumes löschen, werden Sie von Docker aufgefordert, diesen Vorgang zu bestätigen.

Wenn ein Volume einem Container zugeordnet ist, kann dieses Volume erst gelöscht werden, wenn der entsprechende Container gelöscht wird. Gleichzeitig versteht Docker dies nicht immer, selbst wenn der Container entfernt wird. In diesem Fall können Sie den folgenden Befehl verwenden:

docker system prune

Es wurde entwickelt, um Docker-Ressourcen zu bereinigen. Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie in der Lage sein, Volumes zu löschen, deren Status zuvor falsch war.

Die Flags --mount und --volume

Um mit Volumes zu arbeiten, rufen Sie den Befehl auf docker, müssen Sie häufig Flags verwenden. Um beispielsweise während der Containererstellung ein Volume zu erstellen, können Sie dieses Konstrukt verwenden:

docker container run --mount source=my_volume, target=/container/path/for/volume my_image

In der Antike (bis 2017) war die Flagge beliebt --volume. Zunächst ist dieses Flag (es kann auch in abgekürzter Form verwendet werden, dann sieht es so aus -v) wurde für eigenständige Container und die Flagge verwendet --mount - in einer Docker Swarm-Umgebung. Ab Docker 17.06 ist jedoch die Flagge --mount kann in jedem Szenario verwendet werden.

Es ist zu beachten, dass bei der Verwendung der Flagge --mount Die Menge der zusätzlichen Daten, die im Befehl angegeben werden müssen, erhöht sich, aber aus mehreren Gründen ist es besser, dieses spezielle Flag zu verwenden und nicht --volume. Flagge --mount ist der einzige Mechanismus, der es Ihnen ermöglicht, mit Diensten zu arbeiten oder Volume-Treiberoptionen festzulegen. Außerdem ist es einfacher, mit dieser Flagge zu arbeiten.

In den vorhandenen Beispielen für Docker-Datenmanipulationsbefehle können Sie viele Beispiele für die Verwendung des Flags sehen -v. Wenn Sie versuchen, diese Befehle für sich selbst anzupassen, denken Sie daran, dass die Flags --mount и --volume Verwenden Sie unterschiedliche Parameterformate. Das heißt, Sie können nicht einfach ersetzen -v auf --mount und ein funktionierendes Team bekommen.

Der Hauptunterschied zwischen --mount и --volume ist das bei der Verwendung der Flagge --volume Alle Parameter werden in einem Feld zusammengefasst und bei Verwendung verwendet --mount Parameter sind getrennt.

Bei der Arbeit mit --mount Parameter werden als Schlüssel-Wert-Paare dargestellt, und zwar so, wie es aussieht key=value. Diese Paare werden durch Kommas getrennt. Hier sind die am häufigsten verwendeten Optionen --mount:

  • type — Montagetyp. Der Wert für den entsprechenden Schlüssel kann sein binden, Volumen oder tmpfs. Wir sprechen hier von Volumina, das heißt, uns interessiert der Wert volume.
  • source - Quelle mounten. Bei benannten Volumes ist dies der Name des Volumes. Für unbenannte Volumes wird dieser Schlüssel nicht angegeben. Es kann auf verkürzt werden src.
  • destination – der Pfad, unter dem die Datei oder der Ordner im Container bereitgestellt wird. Dieser Schlüssel kann auf verkürzt werden dst oder target.
  • readonly – Mountet das vorgesehene Volume nur zum lesen. Die Verwendung dieses Schlüssels ist optional und ihm wird kein Wert zugewiesen.

Hier ist ein Anwendungsbeispiel --mount mit vielen Optionen:

docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image

Ergebnisse

Hier sind einige nützliche Befehle, die Sie beim Arbeiten mit Docker-Volumes verwenden können:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Hier ist eine Liste häufig verwendeter Optionen für --mount, anwendbar in einem Befehl der Form docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

Nachdem wir diese Docker-Reihe nun abgeschlossen haben, ist es an der Zeit, ein paar Worte darüber zu sagen, wohin Docker-Lernende als nächstes gehen können. Hier toller guter Artikel über Docker. Hier ein Buch über Docker (versuchen Sie beim Kauf dieses Buchs, die neueste Ausgabe davon zu erhalten). Hier Ein weiteres Buch für diejenigen, die der Meinung sind, dass Übung der beste Weg ist, Technologie zu erlernen.

Liebe Leser! Welche Docker-Materialien würden Sie Anfängern zum Erlernen empfehlen?

Docker lernen, Teil 6: Arbeiten mit Daten

Source: habr.com

Kommentar hinzufügen