Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Der MySQL-Docker-Container speichert keine Daten in einem neuen Image

Als weitere Antwort haben Sie angegeben, dass Volumes nicht festgeschrieben werden können und untergeordnete Container tatsächlich Volume-Definitionen von Eltern erben. Daher werden alle Änderungen an der Lautstärke verworfen. Ich möchte Daten wie MySQL-Datenbankdateien hinzufügen, die sich aus mehreren Gründen immer in Volumes befinden sollten, und Sie sollten nicht versuchen, sie in Ihr Image zu übernehmen.

  1. Wenn Sie Container migrieren müssen, gibt es keine einfache Möglichkeit, Daten aus Containern zu extrahieren, wenn sie sich nicht in einem Volume befinden.
  2. Wenn Sie mehrere Container starten möchten, die Daten gemeinsam nutzen, müssen Sie Daten in einem Volume haben.
  3. Wenn Sie Ihre Containerdefinition mit beispielsweise neuen Volumes oder Ports ändern möchten, müssen Sie sie löschen und neu erstellen. Wenn Sie Daten im Container haben, verlieren Sie diese. (Siehe diese Frage ein Beispiel für diesen Fall.)
  4. Das Union-Dateisystem ist langsamer als normale Dateisysteme, was Ihre Anwendung oder Datenbank verlangsamt.

Was sollten Sie stattdessen tun?

  1. Verwenden Sie einen Nur-Daten-Container, der mit jeder Instanz des Service-Containers verknüpft werden kann. Dann können Sie volume-from verwenden, um Ihre Daten in den Service-Container zu bekommen.
  2. Verwenden Sie ein vom Host gemountetes Volume, damit Sie Container neu starten und denselben Speicherort in neuen Containern mounten können.