Maison  >  Article  >  base de données  >  Comment préserver les données de la base de données MySQL lors de la validation d'un conteneur en tant qu'image ?

Comment préserver les données de la base de données MySQL lors de la validation d'un conteneur en tant qu'image ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-24 11:50:29664parcourir

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

Dépannage des données de base de données compromises dans un conteneur MySQL

Lors de la tentative d'importation d'un dump SQL dans un conteneur MySQL et de validation ultérieure du conteneur en tant que nouvelle image, les utilisateurs peuvent rencontrer le problème de la base de données ne conservant pas les données nouvellement créées lors du démarrage d'un conteneur avec la nouvelle image. Cet article étudie la cause première et propose une solution pour résoudre ce problème.

Contexte

L'image officielle MySQL Docker stocke les données dans un volume. Il s'agit d'une configuration souhaitable pour garantir la persistance des données au-delà de la durée de vie du conteneur. Cependant, les volumes de données contournent le système de fichiers Union et ne sont pas inclus dans le processus de validation d'image. Par conséquent, les données ajoutées à la base de données pendant l'exécution du conteneur ne seront pas reflétées dans l'image validée.

Solution

Pour surmonter cette limitation et valider les données nouvellement ajoutées, les utilisateurs peuvent créer leur propre base MySQL image sans volumes de données. Cela implique de créer une image personnalisée qui inclut les logiciels et la configuration nécessaires, mais exclut tout point de montage de volume.

Guide étape par étape

  1. Créez une image de base MySQL personnalisée sans volumes :
FROM mysql:latest
RUN apt-get update && apt-get install -y mysql-client
  1. Créez une nouvelle base de données MySQL et importez le dump SQL :
mysql -uroot -psecret -e 'create database <database_name>;'
mysql -uroot -psecret <database_name> < /mnt/<sql_dump_file>.sql
  1. Commettez le conteneur en tant que nouvelle image :
docker commit -m "Imported <database_name> SQL dump" <container_id> <new_image_name>:<version>

Avantages de cette solution

En créant une image de base MySQL personnalisée sans volumes, les utilisateurs ont la possibilité de :

  • Commettre des données dans le image et la conserver même après la fin du conteneur.
  • Assurez-vous que les données persistent lors des redémarrages et des mises à niveau du conteneur.

Mise en garde

Il est important de noter que les données ajoutées à un conteneur en cours d'exécution après la validation sera perdu lorsque le conteneur cessera d'exister. En effet, les données ne sont plus stockées dans un volume persistant mais plutôt dans le système de fichiers éphémères du conteneur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn