Docker - Zusammenfassung von 3 Möglichkeiten zum Ändern von Container-Mount-Verzeichnissen

Docker - Zusammenfassung von 3 Möglichkeiten zum Ändern von Container-Mount-Verzeichnissen

Methode 1: Ändern Sie die Konfigurationsdatei (Sie müssen den Docker-Dienst stoppen).

1. Stoppen Sie den Docker-Dienst

systemctl stop docker.service (kritisch, der Docker-Dienst muss vor der Änderung gestoppt werden)

2. vim /var/lib/docker/containers/container-ID/config.v2.json

Ändern Sie den Verzeichnisspeicherort in der Konfigurationsdatei, speichern Sie dann und beenden Sie

"MountPoints":{"/home":{"Quelle":"/docker","Ziel":"/home","RW":true,"Name":"","Treiber":"","Typ":"binden","Propagation":"rprivate","Spezifikation":{"Typ":"binden","Quelle":"//docker/","Ziel":"/home"}}}

3. Starten Sie den Docker-Dienst

systemctl starte docker.service

4. Starten Sie den Docker-Container

docker start <Containername/ID>

Methode 2: Senden Sie einen vorhandenen Container als neues Image und führen Sie ihn anschließend erneut aus.

$ Docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
 5a3422adeead ubuntu:14.04 "/bin/bash" Vor etwa einer Minute beendet (0) Vor etwa einer Minute agitated_newton
$ Docker Commit 5a3422adeead neuer Imagename
$ docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 neuer Imagename /bin/bash

Stoppen Sie dann den alten Container und verwenden Sie diesen neuen. Wenn der neue Container aus irgendeinem Grund den alten Namen verwenden muss, verwenden Sie nach dem Entfernen des alten Containers „docker rename“.

Methode 3: Den Container als Image exportieren und dann als neues Image importieren

$docker container export -o ./myimage.docker Container-ID
$docker import ./myimage.docker neuerImagename
$docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 neuer Imagename /bin/bash

Stoppen Sie dann den alten Container und verwenden Sie diesen neuen. Wenn der neue Container aus irgendeinem Grund den alten Namen verwenden muss, verwenden Sie nach dem Entfernen des alten Containers „docker rename“.

Zusätzliches Wissen: So verhindern Sie Datenverlust nach Docker-Neustarts, lernen Sie, wie Sie Datenvolumes mounten

Wenn Sie Docker zum Bereitstellen von Webanwendungen oder MySQL-Datenbanken verwenden, werden Sie feststellen, dass beim Neustart des Containers die während des Containerbetriebs generierten Protokolle oder Datenbankdaten gelöscht werden. Wie speichern wir also diese Daten?

Hierzu müssen Sie verstehen, wie Docker das Host-Festplattenverzeichnis bereitstellt, um Daten dauerhaft zu speichern.

1. Führen Sie Docker Volume beim Erstellen eines Containers aus

Verwenden Sie den Befehl „docker run“, um einen Docker-Container auszuführen, verwenden Sie das Image ubuntu/nginx und mounten Sie das lokale Verzeichnis /tmp/source in das Containerverzeichnis /tmp/destination

docker run -itd --volume /tmp/source:/tmp/destination --name test ubuntu/nginx bash

Ein Docker-Container wird basierend auf dem Ubuntu/Nginx-Image erstellt.

Der Name des angegebenen Containers ist „Test“, der durch die Option „--name“ angegeben wird.

Das Docker-Volume wird durch die Option --volume (kann als -v abgekürzt werden) angegeben und das Verzeichnis /tmp/source des Hosts entspricht eins zu eins dem Verzeichnis /tmp/destination im Container.

2. Docker-Volume anzeigen

Verwenden Sie den Befehl „Docker Inspection“, um detaillierte Informationen zum Docker-Container anzuzeigen:

docker inspect --format='{{json .Mounts}}' test | python -m json.tool[{"Ziel": "/tmp/Ziel","Modus": "","Ausbreitung": "","RW": true,"Quelle": "/tmp/Quelle","Typ": "binden"}]

Mit der Option --format können Sie die erforderlichen Containerinformationen selektiv anzeigen. .Mount sind die Docker-Volume-Informationen des Containers.

python -m json.tool kann die JSON-Ausgabezeichenfolge für die Anzeige formatieren.

Quelle stellt das Verzeichnis auf dem Host dar, also /tmp/source.

Ziel ist das Verzeichnis im Container, also /tmp/Ziel.

3. Lokale Dateien können mit dem Container synchronisiert werden

Erstellen Sie eine neue Datei „hello.txt“ im lokalen Verzeichnis „/tmp/source“

berühren Sie /tmp/source/hello.txtls /tmp/source/hello.txt

Die Datei hello.txt ist im Containerverzeichnis /tmp/destination/ sichtbar.

Mit dem Befehl „Docker Exec“ können Sie Befehle in einem Container ausführen.

docker exectest ls /tmp/ziel/hallo.txt

Daher können Änderungen am Verzeichnis /tmp/source/ auf dem Host mit dem Containerverzeichnis /tmp/destination/ synchronisiert werden.

4. Containerdateien können mit dem Hostcomputer synchronisiert werden

Erstellen Sie eine neue Datei world.txt im Containerverzeichnis /tmp/destination

docker exec test touch /tmp/ziel/welt.txtdocker exec test ls /tmp/ziel/hallo.txtwelt.txt

Die Datei world.txt ist im Verzeichnis /tmp/source/ des Hostcomputers sichtbar.

ls /tmp/source/hallo.txt welt.txt

Die obige Zusammenfassung der 3 Methoden zum Ändern von Container-Mount-Verzeichnissen durch Docker ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • So ändern Sie den Inhalt eines vorhandenen Docker-Containers
  • 5 Möglichkeiten, Docker-Container auf andere Server zu migrieren
  • So zeigen Sie Dateien im Docker-Image an
  • Docker CP kopiert Dateien und gibt den Container ein

<<:  Ursachen und Lösungen für domänenübergreifende Probleme bei Ajax-Anfragen

>>:  Einführung in die Verwendung gängiger XHTML-Tags

Artikel empfehlen

Führen Sie die Schritte zum Upgrade von Nginx http auf https aus.

Der Unterschied zwischen http und https ist Bei m...

Soll die Like-Funktion MySQL oder Redis verwenden?

Inhaltsverzeichnis 1. Häufige Fehler von Anfänger...

10 tödliche semantische Fehler in der Webtypografie

<br />Dies stammt aus dem Inhalt von „Web Fr...

Kennen Sie den Unterschied zwischen leerem Wert und Nullwert in MySQL

Vorwort Kürzlich habe ich festgestellt, dass die ...

Ausführliche Erklärung zum Currying von JS-Funktionen

Inhaltsverzeichnis 1. Ergänzende Wissenspunkte: i...

Probleme bei der Ausführungsreihenfolge von AND und OR in SQL-Anweisungen

Frage Beim Schreiben von Datenbank-SQL ist mir ge...

Tutorial zur MySQL-Optimierung: Große Paging-Abfrage

Inhaltsverzeichnis Hintergrund LIMIT-Optimierung ...

Analyse des Tutorials zur Implementierung der Remote-Anmeldung unter Linux

Linux wird im Allgemeinen als Server verwendet un...

Detaillierte Erklärung des Hintergrund-Positionsprozentsatzprinzips

Als ich heute jemandem beim Anpassen des Codes ha...

So verwenden Sie den Linux-Befehl „more“ in allgemeinen Linux-Befehlen

more ist eines unserer am häufigsten verwendeten ...

MySql-Abfrageanweisung mit mehreren Bedingungen und dem Schlüsselwort „OR“

Im vorherigen Artikel wurde die MySql-Abfrageanwe...

Detaillierte Erklärung von JavaScript Reduce

Inhaltsverzeichnis Karte Filter manche jeder Inde...

Erste Schritte mit benutzerdefinierten Anweisungen in Vue 3.0

Inhaltsverzeichnis 1. Benutzerdefinierte Anweisun...