Heim  >  Artikel  >  Datenbank  >  Wie bleiben MySQL-Datenbankdaten erhalten, wenn ein Container als Image übergeben wird?

Wie bleiben MySQL-Datenbankdaten erhalten, wenn ein Container als Image übergeben wird?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 11:50:29664Durchsuche

How to Preserve MySQL Database Data When Committing a Container as Image?

Fehlerbehebung bei kompromittierten Datenbankdaten in einem MySQL-Container

Beim Versuch, einen SQL-Dump in einen MySQL-Container zu importieren und den Container anschließend als neues Image festzuschreiben, kann es zu Problemen kommen Das Problem besteht darin, dass die Datenbank die neu erstellten Daten beim Starten eines Containers mit dem neuen Image nicht beibehält. Dieser Artikel untersucht die Grundursache und bietet eine Lösung zur Behebung dieses Problems.

Hintergrund

Das offizielle MySQL Docker-Image speichert Daten in einem Volume. Dies ist eine wünschenswerte Konfiguration, um die Datenpersistenz über die Lebensdauer des Containers hinaus sicherzustellen. Datenvolumes umgehen jedoch das Union File System und werden nicht in den Image-Commit-Prozess einbezogen. Folglich werden Daten, die während der Containerlaufzeit zur Datenbank hinzugefügt werden, nicht im festgeschriebenen Image widergespiegelt.

Lösung

Um diese Einschränkung zu überwinden und die neu hinzugefügten Daten festzuschreiben, können Benutzer ihre eigene MySQL-Basis erstellen Bild ohne Datenmengen. Dazu gehört die Erstellung eines benutzerdefinierten Images, das die erforderliche Software und Konfiguration enthält, aber keine Volume-Mount-Punkte enthält.

Schritt-für-Schritt-Anleitung

  1. Erstellen Sie ein benutzerdefiniertes MySQL-Basisimage ohne Volumes:
FROM mysql:latest
RUN apt-get update && apt-get install -y mysql-client
  1. Erstellen Sie eine neue MySQL-Datenbank und importieren Sie den SQL-Dump:
mysql -uroot -psecret -e 'create database <database_name>;'
mysql -uroot -psecret <database_name> < /mnt/<sql_dump_file>.sql
  1. Container als neues Image übernehmen:
docker commit -m "Imported <database_name> SQL dump" <container_id> <new_image_name>:<version>

Vorteile dieser Lösung

Durch die Erstellung eines benutzerdefinierten MySQL-Basisimages ohne Volumes erhalten Benutzer die Möglichkeit:

  • Daten an die zu übertragen Image und behalten Sie es auch nach der Beendigung des Containers bei.
  • Stellen Sie sicher, dass die Daten über Container-Neustarts und -Upgrades hinweg bestehen bleiben.

Vorbehalt

Es ist wichtig zu beachten, dass die Daten hinzugefügt wurden Ein nach dem Commit ausgeführter Container geht verloren, wenn der Container nicht mehr existiert. Dies liegt daran, dass Daten nicht mehr in einem persistenten Volume gespeichert werden, sondern im ephemeren Dateisystem des Containers.

Das obige ist der detaillierte Inhalt vonWie bleiben MySQL-Datenbankdaten erhalten, wenn ein Container als Image übergeben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn