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

Kommentare auf Webseiten verursachen Textüberlauf im Internet Explorer

Der experimentelle Code lautet wie folgt: </hea...

Linux /etc/network/interfaces Konfigurationsschnittstellenmethode

Die Datei /etc/network/interfaces wird in Linux z...

So installieren und konfigurieren Sie den Apache-Webserver

Erfahren Sie, wie Sie Ihre eigene Website auf Apa...

Richtiger Einsatz von MySQL-Partitionstabellen

Übersicht über partitionierte MySQL-Tabellen Wir ...

Implementierung des Markdown-Renderings in einer Vue-Einzelseitenanwendung

Beim Rendern von Markdown habe ich zuvor den Vors...

Natives JS zum Erzielen eines Puzzle-Effekts

In diesem Artikel wird der spezifische Code von n...

Vue implementiert nahtloses Scrollen von Listen

In diesem Artikelbeispiel wird der spezifische Co...

Mit Mailto ist das Senden von E-Mails im HTML-Format ganz einfach

Kürzlich habe ich dem Footer-Postfach des Kunden e...

js zur Realisierung eines einfachen Puzzlespiels

In diesem Artikel wird der spezifische Code von j...

Freigabe der Schritte zum SVN-Dienstsicherungsvorgang

Schritte zur Sicherung des SVN-Dienstes 1. Quells...

So installieren Sie RabbitMQ schnell in Docker

1. Holen Sie sich das Bild #Geben Sie die Version...