Docker Compact-Handbuch (2: Mount und Datenpersistenz)

Zunaechst

Dieser Artikel "Docker Compact Manual" besteht aus 4 Elementen. Weitere Artikel finden Sie hier.

Postleitzahl Untertitel und Zugriffsziel
1 Grundlegende / grundlegende Befehle
2 Mount- und Datenpersistenz(* Dieser Beitrag)
3 docker-compose
4 Erstellen Sie ein benutzerdefiniertes Bild

Zweck dieses Artikels

Dies ist eine Fortsetzung des vorherigen Artikels. Diesmal das Mount-Volumen, das bei Verwendung des Containers nicht zu vermeiden ist Ich werde die Datenpersistenz zusammenfassen.

wichtig ** Diese Zeit ist wichtig. Ich habe mich selbst bereut, ohne das Reittier und die Ausdauer zu kennen. : Schluchzen: Bitte versuchen Sie, eine komfortable Containerumgebung zu schaffen, indem Sie diese fest montieren und aufrechterhalten. **: grins:

Persistenz von Containerdaten

** Die Daten im Container gehen verloren, wenn Sie den Container zerstören. ** **. Es ist in Ordnung, wenn Sie es für den Testbetrieb wegwerfen, aber Sie möchten vermeiden, Daten zur Verwendung in der Datenbank zu löschen. Daten, die nicht im Container verloren gehen dürfen, müssen so eingestellt werden, dass sie den Container verlassen und der Container herausschaut.

Ausführungssystem = im Container
Erfasste Daten / Daten aktualisieren = außerhalb des Containers

Ich denke, dass das Bild von gut ist.

Verwenden Sie die Halterung, um diesen Behälter zu entfernen.

Montagetyp

Es gibt zwei Arten von Halterungen. Nicht welches ist besser Ich denke, es ist notwendig, sie je nach zu behandelndem Inhalt richtig zu verwenden.

Montagetyp Ziel einbinden Empfohlene Verwendung
Volumen Für Docker Engine reservierter Bereich Daten, die Sie nicht aus dem Docker-Container sehen möchten
Datenbankdaten usw.
binden Docker-Host-Verzeichnis Wenn Sie die Docker-Host-Datei dem Container anzeigen möchten
Festlegen von Daten zur Datenübergabe
Daten, für die Änderungen sofort wiedergegeben werden

スクリーンショット 2020-10-26 11.14.10.png

スクリーンショット 2020-10-26 11.15.19.png

Befehl zur Volume-Erstellung

Volumes können mit dem Docker-Volume-Befehl erstellt, aufgelistet und gelöscht werden. Wenn Sie inspect verwenden, können Sie das Speicherziel anhand des Bereitstellungspunkts des Volumes ermitteln.

Unterbefehl Inhalt Anwendungsbeispiel
create Volume-Erstellung docker volume create --name 'Datenträgername'
inspect Überprüfen Sie die Details des Volumens docker volume inspect 'Datenträgername'
ls Liste der Bände docker volume ls
prune Löschen Sie alle nicht gemounteten Volumes docker volume prune
rm Lautstärke löschen docker volume rm 'Datenträgername'

Informationen zu den Mount-Einstellungen

Mount-Einstellungen (in Kombination mit Docker-Lauf usw. verwenden) Mit dem Flag "-v" oder "--mount" setzen. Bis jetzt wird -v häufig verwendet, und es gibt viele Beschreibungen in Büchern und Nachschlagewerken.

Ich denke, es ist besser, --mount zu verwenden.

Als Grund

1. Wenn das Volume nicht vorhanden ist, wird es ohne Erlaubnis erstellt.

Das Folgende ist ein Auszug aus der offiziellen Website, Wenn Sie im Fall von -v einen Tippfehler machen, wird ein neues Volume erstellt. Ich erhalte die Fehlermeldung, dass die vorherigen Daten nicht sichtbar sind. Wenn dieser Fehler auftritt und Sie mit der Entwicklung fortfahren, fällt es Ihnen schwer, ihn zu beheben, wenn Sie ihn später bemerken. Auf der anderen Seite gibt --mount einen Fehler zurück, wenn er nicht vorhanden ist, sodass Sie sicher sein können.

Quelle: Docker-Dokumente Wenn Sie das Mounten einer Datei oder eines Verzeichnisses mit> -v oder --volume binden und die Datei oder das Verzeichnis noch nicht auf dem Docker-Host vorhanden ist, generiert -v diesen Mount-Endpunkt. In diesem Fall wird es immer als Verzeichnis generiert.

Wenn Sie eine Datei oder ein Verzeichnis mit> --mount binden und die Datei oder das Verzeichnis nicht auf dem Docker-Host vorhanden ist, generiert Docker die Datei oder das Verzeichnis nicht automatisch. Stattdessen wird ein Fehler gedruckt.

2. Es ist schwer zu sagen, ob es sich um einen Bind-Mount oder einen Volume-Mount handelt

Einstellung mit -v

-v / home / ubuntu / ***: / usr / local / *** bind mount -v mysqlvolume: / var / lib / mysql Volume Mount Der obige Unterschied ist mit oder ohne das erste / schwer zu verstehen

--mount

--mount type = bind, src = / home / ubuntu / ***. Dst = / usr / local / *** Bind mount --mount type = volume, src = mysqlvolume, dst = / var / lib / mysql Volume mount

Verwenden Sie für --mount`` type für bind oder volume mount. Geben Sie an, wo welche Daten mit src = sorce (Quelle einhängen) und dst = Ziel (Ziel einhängen) bereitgestellt werden sollen. Es scheint, dass die Operation hier Fehler reduzieren wird.

Datensicherung

Das Sichern ist mit einer Bindehalterung einfach. (Da es auf dem Host vorhanden ist, kann es durch Kopieren der Daten verarbeitet werden.) Wenn es sich um eine Volume-Bereitstellung handelt, erfordert die Sicherung Arbeit.

Zunächst wird der Beispielbefehl für die Sicherung unten beschrieben.

docker run --rm --mount type=volume,src=*****,dst=/src --mount type=bind,src="$PWD",dst=/dest busybox tar czf /dest/backup.tar.gz -C /src .

Schauen wir uns den Inhalt der Reihe nach an.

  1. Verwerfen Sie nach dem Ausführen mit docker run --rm
  2. Geben Sie an, dass die Volume-Bereitstellung in / src der Busybox mit "--mount type = volume, src = *****, dst = / src" ausgeführt werden soll
  3. Geben Sie bind / mount in / dest der Busybox mit --mount type = bind, src =" $ PWD ", dst = / dest an.
    Geben Sie das aktuelle Verzeichnis des Docker-Hosts mit" $ PWD "an.
  4. Ausführen von leichtem Linux auf einer Busybox
  5. Kopieren Sie die Dateierstellung im gz-Format von / src nach / dest mit tar (Befehl zum Behandeln von Archivdateien) + gzf
  6. Da es von PWD gebunden wird, wird es in das aktuelle Verzeichnis geschrieben.

Damit ist die Volumensicherung abgeschlossen.

Das Obige ist eine Sicherungsmethode Für diese Methode müssen Sie den ** Namen des Sicherungszielvolumes ** kennen. Bei der Verwaltung vieler Container ist es schwierig zu wissen, welcher Container welches Volume verwendet.

In diesem Fall

Verwenden Sie volume-from.

--volumes-from ist, wenn Sie den Container starten Es erbt verschiedene Container-Mount-Informationen und mountet mit denselben Einstellungen. Weil Sie das Sicherungsziel durch den Verzeichnisnamen des Containers anstelle des Datenträgernamens angeben können Sie müssen nicht wissen, auf welchem Volume das Containerverzeichnis bereitgestellt ist. Es ist sehr praktisch für die Datensicherung.

Beispielcode

docker run --rm --volumes-from {{Containername}} -v "$PWD":/dest busybox tar czf /dest/backup.tar.gz -C {{Zieladresse}} .
  1. Angabe von "Volumes-from"
  2. Starten Sie die Busybox und sichern Sie den Container Die obigen 2 Schritte sind einfach.

Wenn Sie ein Volume verwenden, ist es außerdem besser, einen ** Datenvolumencontainer ** einzurichten. Der Datenvolumencontainer arbeitet nicht hauptsächlich als Containeraktivität. Es werden nur die erforderlichen Verzeichnisse bereitgestellt. Obwohl dieser Datenvolumencontainer nicht hauptsächlich funktioniert

1. Sie können die Mount-Einstellungen verwenden, ohne das Ziel für die Volume-Bereitstellung zu kennen.
2. Da die Volume-Mount-Informationen im Daten-Volume-Container verwaltet werden können, wird das Sicherungsziel geklärt.

Es hat den Vorteil, verwendet zu werden.

Backup wiederherstellen

Die Wiederherstellung ist das Gegenteil von der Volumensicherung.

Erstellen Sie zunächst ein Volume.

docker volume create *****

Geben Sie dann den Befehl in umgekehrter Richtung der Datensicherung ein.

docker run --rm --mount type=volume,src=*****,dst=/dest --mount type=bind,src="$PWD",dst=/src busybox tar xzf /src/backup.tar.gz -C /dest
  1. Volume Hängen Sie das Wiederherstellungsziel-Volume in / dest ein
  2. Binden Sie das aktuelle Verzeichnis an / src
  3. Mit Teer xzf extrahieren
  4. Hängen Sie das wiederhergestellte Volume ein und die Daten sind wieder verfügbar.
    (Befehlsposting weggelassen)

Dieser Artikel endet hier. Danke fürs Lesen.

Recommended Posts

Docker Compact-Handbuch (2: Mount und Datenpersistenz)
Docker Compact Manual (3: Docker-Compose)
Docker Compact-Handbuch (1: Basic / Basic-Befehle)
Docker Compact Manual (4: Erstellen eines benutzerdefinierten Bildes)
Docker-Installation und -Initialisierung