Mysql
 sql >> Database >  >> RDS >> Mysql

Il contenitore MySQL Docker non salva i dati nella nuova immagine

Come un'altra risposta e hai affermato che i volumi non possono essere impegnati e i contenitori figlio ereditano in effetti le definizioni di volume dai genitori. Pertanto, qualsiasi modifica al volume verrà annullata. Vorrei aggiungere dati come i file di database mysql dovrebbero sempre essere in volumi per diversi motivi e non dovresti provare a commetterli nella tua immagine.

  1. Se devi migrare i contenitori, non esiste un modo semplice per estrarre i dati dai contenitori se non si trovano in un volume.
  2. Se vuoi avviare più contenitori che condividono i dati, devi avere i dati in un volume.
  3. Se vuoi modificare la definizione del tuo container con, ad esempio, nuovi volumi o porte, devi eliminarlo e ricrearlo. Se hai dati nel contenitore, li perderai. (Vedi questa domanda per un esempio di questo caso.)
  4. Il file system union è più lento dei normali file system, il che rallenterà l'applicazione o il database.

Allora cosa dovresti fare invece?

  1. Utilizzare un contenitore di soli dati che può essere collegato a qualsiasi istanza del contenitore di servizi. Quindi puoi utilizzare i volumi da per ottenere i tuoi dati nel contenitore del servizio.
  2. Utilizza un volume montato dall'host in modo da poter riavviare i container e montare la stessa posizione in nuovi container.