Wenn Sie Docker zum Bereitstellen von Webanwendungen oder MySQL-Datenbanken verwenden, werden Sie feststellen, dass beim Neustart des Containers die während der Ausführung des Containers generierten Protokolle oder Datenbankdaten gelöscht werden.
Lösung:
Docker kann Daten dauerhaft speichern, indem das Host-Festplattenverzeichnis bereitgestellt wird.
1. Führen Sie beim Erstellen eines Containers Docker Volume aus.
Verwenden Sie den Docker-Run-Befehl, um einen Docker-Container auszuführen, verwenden Sie das Image ubuntu/nginx und mounten Sie das lokale Verzeichnis /tmp/source das Containerverzeichnis /tmp /destination
docker run -itd --volume /tmp/source:/tmp/destination --name test ubuntu/nginx bash
Erstellt einen Docker-Container basierend auf dem Ubuntu/Nginx-Image.
Der Name des angegebenen Containers ist test und wird durch die Option ––name angegeben.
Docker Volume wird durch die Option ––volume (kann als -v abgekürzt) angegeben. Das Verzeichnis /tmp/source des Hosts entspricht dem Verzeichnis /tmp/destination im Container.
2. Docker-Volume anzeigen
Verwenden Sie den Befehl docker inspect, um die detaillierten Informationen des Docker-Containers anzuzeigen:
docker inspect --format='{{json .Mounts }} 'test |. python -m json.tool[{"Destination": "/tmp/destination", "Mode": "", "Propagation": "", "RW": true, "Source": "/ tmp/ source","Type": "bind"}]
Verwenden Sie die Option --format, um die erforderlichen Containerinformationen selektiv anzuzeigen. .Mount sind die Docker-Volume-Informationen des Containers.
python -m json.tool kann die ausgegebene JSON-Zeichenfolge formatieren und anzeigen.
Quelle stellt das Verzeichnis auf dem Host dar, d. h. /tmp/source .
Ziel ist das Verzeichnis im Container, also /tmp/destination.
3. Lokale Dateien können mit dem Container synchronisiert werden
Erstellen Sie eine neue hello.txt-Datei im Verzeichnis local/tmp/source
tippen Sie auf /tmp/source/hello .txtls /tmp/source/hello.txt
Die Datei hello.txt ist im Verzeichnis container/tmp/destination/ sichtbar
Verwenden Sie den Docker-Exec-Befehl, um Befehle im Container auszuführen.
docker exectest ls /tmp/destination/hello.txt
So können Änderungen am Verzeichnis /tmp/source/ auf dem Host-Rechner mit dem Containerverzeichnis /tmp/destination/ synchronisiert werden.
4. Die Containerdatei kann mit dem Host-Computer synchronisiert werden
Erstellen Sie eine neue world.txt-Datei im Verzeichnis „container/tmp/destination“
docker exec test touch / tmp/destination/world .txtdocker exec test ls /tmp/destination/hello.txtworld.txt
Die Datei world.txt ist im Verzeichnis host/tmp/source/ sichtbar
ls / tmp/source/hello. txt world.txt
Weitere verwandte Tutorials finden Sie in der Spalte Docker-Tutorial auf der chinesischen PHP-Website.
Das obige ist der detaillierte Inhalt vonGehen Daten nach dem Neustart von Docker verloren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!