Implementierung der gemeinsamen Nutzung von Daten zwischen Docker Volume-Containern

Implementierung der gemeinsamen Nutzung von Daten zwischen Docker Volume-Containern

Was ist Volumen?

„Volume“ bedeutet auf Englisch Kapazität und in Docker bedeutet es Datenvolumen, also einen Container zum Speichern von Daten.

Warum Datenaustausch?

In einem Cluster gibt es mehrere Tomcats. Die Codes, die in den Tomcats im Cluster bereitgestellt werden, sind Kopien desselben Codes. Wenn sich die Auslagerungsdatei ändert, bedeutet dies, dass die Auslagerungsdatei in jedem Container aktualisiert werden muss. In einem großen Cluster wird sich diese Arbeitslast unendlich vergrößern. Zurzeit ist Datenfreigabe erforderlich, um dieses Problem zu lösen. Die sogenannte Datenfreigabe bezieht sich auf mehrere Container, die eine Datenkopie gemeinsam nutzen. Wie können wir dies in einer Docker-Umgebung erreichen?

Grundsätze für die gemeinsame Nutzung von Daten

Erstellen Sie auf der Festplatte des Hosts einen Speicherplatz zum Speichern gemeinsam genutzter Daten. Mehrere Container teilen sich dieses Verzeichnis.

Lösungen zum Datenaustausch

Wenn es um die gemeinsame Nutzung von Daten geht, denkt man leicht an den Mount-Befehl in Linux, der ein freigegebenes Verzeichnis mountet.

[x] Verwenden Sie den Parameter -v 宿主機目錄:/容器內容目錄um die freigegebenen Dateien in einer Datei auf dem Host abzulegen. Anschließend teilen sich mehrere Container dieses Verzeichnis, um eine gemeinsame Datennutzung zu erreichen. Dies muss beim Start erfolgen.

[x] Verwenden Sie den Parameter -v 宿主機目錄:/容器內容目錄den Container freizugeben und das freigegebene Hostverzeichnis zu mounten. Realisieren Sie dann die Datenfreigabe durch Mounten des freigegebenen Containers.

Container mountet freigegebene Verzeichnisse direkt

Ressourcenliste

Bereiten Sie zwei Tomcat-Container vor:
tomcat8000 tomcat8001

Detaillierte Schritte

Erstellen gemeinsam genutzter Daten

Erstellen Sie ein freigegebenes Verzeichnis: mkdir -p /usr/local/docker/volumn/pages/
Fügen Sie im freigegebenen Verzeichnis eine freigegebene Datei hinzu: index.html, mit dem folgenden Inhalt

Ich bin ein freigegebenes Volume-Verzeichnis albk!

Erstellen Sie tomcat8000 und tomcat8001

docker run -d --name tomcat8000 -p 8000:8080 -v /usr/local/docker/volumn:/usr/local/tomcat/webapps tomcat

docker run -d --name tomcat8001 -p 8001:8080 -v /usr/local/docker/volumn:/usr/local/tomcat/webapps tomcat
Mounten Sie beim Starten des Containers das Verzeichnis /usr/local/docker/volumn des Hosts im Verzeichnis /usr/local/tomcat/webapps des Tomcat-Containers, damit die Datenfreigabe erreicht werden kann

Überprüfen Sie, ob der Container normal gestartet wird.

Docke PS 

docker exec -it a05a987b6da0 /bin/bash
Überprüfen Sie das Webapps-Verzeichnis, um festzustellen, ob es erfolgreich gemountet wurde.

Browserzugriff
http://host ip:8000/pages/index.html
http://host ip:8001/pages/index.html

Freigegebene Dateien ändern

echo "我是一個volumn 共享目錄albk! 被修改了" > index.html

Authentifizieren Sie den Browser erneut

Sie können sehen, dass unsere geänderten Inhalte in Echtzeit wirksam geworden sind und der Tomcat-Container nicht erneut bereitgestellt werden muss. Dies führt jedoch dazu, dass die Parameter bei jedem Start des Containers sehr lang sind, was fehleranfällig ist. Dies ist akzeptabel, wenn der Cluster klein ist, aber es ist auch viel Arbeit, wenn der Maßstab groß ist. Schauen wir uns eine andere Methode an.

Einbinden eines gemeinsam genutzten Containers Erstellen Sie einen gemeinsam genutzten Container webpages , indem Sie die obige Methode verwenden und -v verwenden, um das gemeinsam genutzte Verzeichnis einzubinden

docker erstellen --name Webseiten -v /usr/local/docker/volumn/pages:/usr/local/tomcat/webapp tomcat /bin/true

Einbinden eines gemeinsam genutzten Containers

docker run --name tomcat8000 -d -p 8000:8080 --volumes-von Webseiten tomcat 
docker run --name tomcat8001 -d -p 8001:8080 --volumes-von Webseiten tomcat
Der Überprüfungsprozess ist der gleiche wie oben. Die eigentliche Funktion der Container-Webseiten besteht darin, einen Einhängepunkt zu definieren. Wenn Sie den Inhalt ändern, müssen Sie nur das freigegebene Verzeichnis des freigegebenen Containers ändern.

Zusammenfassen

Wenn nur wenige Container vorhanden sind, verwenden Sie -v Wenn viele Container vorhanden sind, können Sie -volumes-from verwenden. Dies ist im Wesentlichen dasselbe wie -v. Welche Option Sie verwenden, hängt von der tatsächlichen Situation ab.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Verzeichnisberechtigungen beim Erstellen eines Containers mit Docker
  • Docker erstellt ein benutzerdefiniertes Netzwerk, um eine feste Container-IP-Adresse zu erhalten
  • Ubuntu Docker-Installation in VMware (Containererstellung)
  • So greifen Sie über eine unabhängige IP direkt auf das Docker-für-Windows-Container-Intranet zu
  • So löschen Sie den in Docker erstellten Container

<<:  Detaillierte Erklärung zur Verwendung von Join zur Optimierung von SQL in MySQL

>>:  Vue3.0 Handschrift-Lupeneffekt

Artikel empfehlen

Analyse des MySQL-Sperrmechanismus und der Verwendung

Dieser Artikel veranschaulicht anhand von Beispie...

So ändern Sie in Nginx die über http aufgerufene Website in https

Inhaltsverzeichnis 1. Hintergrund 2. Voraussetzun...

Zusammenfassung der Verwendung von Element-Formularelementen

Es gibt viele Formularelemente. Hier ist eine kur...

Zusammenfassung der Kenntnisse und der Verwendung von Linux-VI-Befehlen

Detaillierte Erklärung des Linux-Befehls vi Der v...

Tipps zur Verwendung von Frameset zum Zentrieren des Breitbilds

Code kopieren Der Code lautet wie folgt: <fram...

Implementierung neuer Probleme mit CSS3-Selektoren

Inhaltsverzeichnis Grundlegende Selektorerweiteru...

Lösung für den Überlauf der HTML-Tabelle

Wenn die Tabelle breit ist, kann es zu einem Über...

Eine vollständige Anleitung zum Löschen von Floats in CSS (Zusammenfassung)

1. Übergeordnetes Div definiert Pseudoklassen: af...

Einführung in die Verwendung des offiziellen MySQL-Leistungstesttools mysqlslap

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...

Detaillierte Erklärung der Schritte zum Erstellen eines Webservers mit node.js

Vorwort Es ist sehr einfach, einen Server in node...

So verwenden Sie Dayjs zum Berechnen gängiger Daten in Vue

Bei der Verwendung von Vue zur Entwicklung von Pr...