Wenn ich den Container zurücksetzen möchte, kann ich versuchen, ein Image festzuschreiben und später den Container zu löschen und einen neuen Container aus dem festgeschriebenen Image zu erstellen. Aber wenn ich das tue, wird das Volume gelöscht und alle meine Daten sind weg
Wie im Docker-Benutzerhandbuch erläutert, sollen Datenvolumes Daten außerhalb eines Container-Dateisystems beibehalten. Dies erleichtert auch die gemeinsame Nutzung von Daten zwischen mehreren Containern.
Während Docker niemals Daten in Volumes löscht (es sei denn, Sie löschen den zugehörigen Container mit docker rm -v
), werden Volumes, auf die von keinem Docker-Container verwiesen wird, als baumelnde Volumes bezeichnet . Diese baumelnden Bände sind schwer zu entfernen und schwer zugänglich.
Dies bedeutet, dass sobald das letzte Container, das ein Volume verwendet, gelöscht wird, das Datenvolumen baumelt und sein Inhalt schwer zugänglich ist.
Um diese baumelnden Volumes zu verhindern, besteht der Trick darin, einen zusätzlichen Docker-Container mit dem Datenvolumen zu erstellen, das Sie behalten möchten. Damit gibt es immer mindestens diesen Docker-Container, der auf das Volume verweist. Auf diese Weise können Sie den Docker-Container löschen, in dem die WordPress-App ausgeführt wird, ohne den einfachen Zugriff auf den Inhalt dieses Datenvolumens zu verlieren.
Solche Container werden als Datenvolumencontainer bezeichnet .
Es muss eine einfache Möglichkeit geben, meinen Container plus Volumendaten zu sichern, aber ich kann sie nirgendwo finden.
Backup-Docker-Images
Verwenden Sie zum Sichern von Docker-Images den Befehl docker save , mit dem ein Teerarchiv erstellt wird, mit dem später mit dem Befehl docker load ein neues Docker-Image erstellt werden kann .
Backup-Docker-Container
Sie können einen Docker-Container auf verschiedene Arten sichern
- durch Festschreiben eines neuen Docker-Images basierend auf dem aktuellen Status des Docker-Containers mit dem Docker-Commit- Befehl
- durch Exportieren des Docker-Container-Dateisystems als Tar-Archiv mit dem Docker-Exportbefehl . Sie können später mit dem Docker-Importbefehl ein neues Docker-Image aus diesem Tar-Archiv erstellen .
Beachten Sie, dass diese Befehle nur das Docker-Container-Layer-Dateisystem sichern. Dies schließt die Datenmengen aus .
Backup-Docker-Datenvolumes
Um ein Datenvolume zu sichern, können Sie einen neuen Container mit dem Volume ausführen, das Sie sichern möchten, und den Befehl tar ausführen, um ein Archiv des Volume-Inhalts zu erstellen, wie im Docker-Benutzerhandbuch beschrieben .
In Ihrem speziellen Fall wird das Datenvolumen zum Speichern der Daten für einen MySQL-Server verwendet. Wenn Sie also ein Tar-Archiv für dieses Volume exportieren möchten, müssen Sie zuerst den MySQL-Server stoppen. Dazu müssen Sie den WordPress-Container stoppen.
Sichern Sie die MySQL-Daten
Eine andere Möglichkeit besteht darin, eine Remoteverbindung zum MySQL-Server herzustellen, um mit dem Befehl mysqldump einen Datenbankspeicherauszug zu erstellen . Damit dies funktioniert, muss Ihr MySQL-Server jedoch so konfiguriert sein, dass er Remoteverbindungen akzeptiert und über einen Benutzer verfügt, der eine Remoteverbindung herstellen darf. Dies ist bei dem von Ihnen verwendeten WordPress-Docker-Image möglicherweise nicht der Fall.
Bearbeiten
Docker hat kürzlich Docker-Volume-Plugins eingeführt, mit denen die Behandlung von Volumes an Plugins delegiert werden kann, die von Anbietern implementiert wurden.
Der docker run
Befehl hat ein neues Verhalten für die -v
Option. Es ist jetzt möglich, ihm einen Datenträgernamen zu übergeben . Auf diese Weise erstellte Volumes werden benannt und können später leicht referenziert werden, wodurch die Probleme mit baumelnden Volumes behoben werden .
Bearbeiten 2
Docker führte den docker volume prune
Befehl ein, um alle baumelnden Volumes einfach zu löschen.