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 führen Sie .sh-Dateien im Linux-System aus

Es gibt zwei Möglichkeiten, .sh-Dateien im Linux-...

CentOS7 64-Bit-Installation MySQL Grafik-Tutorial

Voraussetzungen für die Installation von MySQL: I...

Schreiben und Verstehen von Pfeilfunktionen und diesem in JS

Inhaltsverzeichnis Vorwort 1. So schreiben Sie Fu...

Multiservice-Image-Packaging-Vorgang von Dockerfile unter Aufsicht

Schreiben einer Docker-Datei Konfigurieren Sie di...

CSS-Lösung zum Zentrieren von Elementen mit variabler Breite und Höhe

1. Horizontale Mitte Öffentlicher Code: html: <...

HTML-Grundstruktur_Powernode Java Academy

Wenn wir lernen, Webseiten zu entwickeln, ist das...

So stellen Sie mit Docker schnell einen Elasticsearch-Cluster bereit

In diesem Artikel werden Docker Container (orches...

Natives JavaScript-Message Board

In diesem Artikel wird der spezifische JavaScript...

Lernprogramm zur Verwendung von HTML-Formular-Tags

Mithilfe von HTML-Formularen können verschiedene ...

Zusammenfassung der Vue3-Slot-Nutzung

Inhaltsverzeichnis 1. Einführung in den V-Slot 2....

Neue Ideen zur Zeitformatierung in JavaScript toLocaleString()

Inhaltsverzeichnis 1. Konventionelle Ideen zur Ze...