Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le conteneur MySQL Docker n'enregistre pas les données dans une nouvelle image

Comme autre réponse et vous avez déclaré que les volumes ne peuvent pas être validés et que les conteneurs enfants héritent en fait des définitions de volume des parents. Par conséquent, toute modification du volume sera ignorée. Je voudrais ajouter des données telles que les fichiers de base de données mysql doivent toujours être en volumes pour plusieurs raisons et vous ne devriez pas essayer de les valider dans votre image.

  1. Si vous devez migrer des conteneurs, il n'existe aucun moyen simple d'extraire des données de conteneurs si elles ne se trouvent pas dans un volume.
  2. Si vous souhaitez démarrer plusieurs conteneurs qui partagent des données, vous devez avoir des données dans un volume.
  3. Si vous souhaitez modifier la définition de votre conteneur avec, par exemple, de nouveaux volumes ou ports, vous devez le supprimer et le recréer. Si vous avez des données dans le conteneur, vous les perdrez. (Voir cette question pour un exemple de ce cas.)
  4. Le système de fichiers union est plus lent que les systèmes de fichiers normaux, ce qui ralentira votre application ou votre base de données.

Alors que devriez-vous faire à la place ?

  1. Utilisez un conteneur de données uniquement qui peut être lié à n'importe quelle instance du conteneur de services. Ensuite, vous pouvez utiliser volumes-from pour transférer vos données dans le conteneur de services.
  2. Utilisez un volume monté sur l'hôte afin de pouvoir redémarrer les conteneurs et monter le même emplacement dans de nouveaux conteneurs.