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.
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.
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.
FROM mysql:latest RUN apt-get update && apt-get install -y mysql-client
mysql -uroot -psecret -e 'create database <database_name>;' mysql -uroot -psecret <database_name> < /mnt/<sql_dump_file>.sql
docker commit -m "Imported <database_name> SQL dump" <container_id> <new_image_name>:<version>
Durch die Erstellung eines benutzerdefinierten MySQL-Basisimages ohne Volumes erhalten Benutzer die Möglichkeit:
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!