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

So platzieren Sie große Bilder auf kleinem Raum einer Webseite

Originalquelle: www.bamagazine.com Enge Bereiche ...

Drei Möglichkeiten zur Implementierung des Wasserfall-Flow-Layouts

Vorwort Als ich heute Xianyu durchsuchte, fiel mi...

Entmystifizierung des HTML 5-Arbeitsentwurfs

Das World Wide Web Consortium (W3C) hat einen Entw...

So starten Sie mehrere MySQL-Datenbanken auf einem Linux-Host

Lassen Sie uns heute darüber sprechen, wie Sie vi...

Detaillierte Erklärung des Mindestbreitenwerts von Inline-Blöcken in CSS

Vorwort Vor kurzem habe ich mir abends etwas Zeit...

Analysieren des MySQL-Binärprotokolls

Inhaltsverzeichnis 1. Einführung in Binlog 2. Bin...

Beispiel, wie man einen Div-Hintergrund transparent macht

Es gibt zwei gängige Möglichkeiten, den Div-Hinte...

Entwerfen Sie einen Datensammler mit Vue

Inhaltsverzeichnis Szenario Kernthemen Statusüber...

js realisiert 3D-Soundeffekte durch audioContext

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