Comme le titre l'indique, j'exécute un conteneur mysql sur docker. J'ai une autre application java exécutée sur un autre conteneur docker et ils peuvent communiquer entre eux. Cependant, chaque fois que je dois apporter quelques modifications à mon conteneur mysql, je dois le réexécuter et les données sont perdues. Existe-t-il un moyen pour moi de valider toutes ces modifications de données dans une autre image docker afin que je puisse réutiliser cette image particulière pour créer un conteneur mysql contenant toutes les données? Merci

-1
Ishaan Khurana 31 août 2020 à 16:15

2 réponses

Meilleure réponse

Vous devrez créer un volume Docker pour conserver ces informations.

Depuis le document

Créez un répertoire de données sur un volume approprié sur votre système hôte, par ex. / mon / propre / datadir.

Démarrez votre conteneur mysql comme ceci:

$ docker run --name some-mysql -v / my / own / datadir: / var / lib / mysql -e MYSQL_ROOT_PASSWORD = mon-secret-pw -d mysql: tag

0
ESG 31 août 2020 à 13:19

Le stockage est découplé des applications lorsque vous les conteneurisez. Ils sont conçus de cette manière pour que nos contenants soient aussi minces que possible.

Si vous avez besoin que les données persistent entre la destruction et la recréation d'un conteneur, vous devrez alors utiliser un "volume".

En termes ELI5, un volume est essentiellement un lecteur flash pour un conteneur. Vous le stockez séparément et vous y connectez des conteneurs via un point de montage. Vous demandez ensuite aux applications de vos conteneurs d'écrire des données sur ce point de montage - de cette façon, les données sont stockées en externe dans votre conteneur réel.

Plus d'informations peuvent être trouvées ici: https://docs.docker.com/storage/volumes/

0
Chewy 31 août 2020 à 13:19