Plusieurs conteneurs Docker, sur une même image, les différentes config
Je suis totalement nouveau pour Docker donc, je vous remercie de votre patience.
Je suis à la recherche d'un moyen pour déployer de multiples récipients avec la même image, mais j'ai besoin de passer dans une autre config (fichier) de chaque?
Droit maintenant, ma compréhension est que une fois que vous générez une image, c'est ce qui est déployé, mais le problème pour moi est que je ne vois pas l'intérêt dans la construction de plusieurs images de la même application lorsqu'elle est uniquement la config qui est différent entre les conteneurs.
Si c'est la norme, alors je vais avoir à traiter avec elle, cependant si il y a une autre façon, alors s'il vous plaît mettez-moi à sortir de ma misère! 🙂
Merci!
OriginalL'auteur Ant | 2016-08-16
Vous devez vous connecter pour publier un commentaire.
Je pense en regardant les exemples, qui sont faciles à comprendre, pourriez-vous donner la meilleure image possible.
Ce que vous voulez faire est parfaitement valide, une image doit être quelque chose que vous devez exécuter, sans configuration.
Pour générer la configuration, vous pouvez soit:
a) volume monte
utilisation de volumes et de monter le fichier conteneur commencer
docker run -v my.ini:/etc/mysql/my.ini percona
(et même avecdocker-compose
).Être conscient, vous pouvez répéter l'opération aussi souvent que vous le souhaitez, afin de monter plusieurs configs dans votre conteneur (donc le moteur d'exécution-la version de l'image).
Vous allez créer ces configs sur l'ordinateur hôte avant l'exécution du conteneur et de la nécessité d'envoyer ces fichiers par le conteneur, qui est l'inconvénient de cette approche (portabilité)
b) du point d'entrée de base de configuration (génération)
La plupart des avancées docker images fournissent un complexe appelé point d'entrée qui consomme des variables d'environnement que vous transmettez lors du démarrage de l'image, afin de créer la configuration(s) pour vous, comme https://github.com/docker-library/percona/blob/master/5.7/docker-entrypoint.sh
ainsi, lorsque vous exécutez cette image, vous pouvez le faire
docker run -e MYSQL_DATABASE=myapp percona
et cela va démarrer percona et créer la base de données percona pour vous.Cela est fait par
Bien sûr, vous pouvez faire ce que vous voulez avec cette. E. g cette configuration générale portus image: https://github.com/EugenMayer/docker-rancher-extra-catalogs/blob/master/templates/registry-slim/11/docker-compose.yml
qui a ce point d'entrée https://github.com/EugenMayer/docker-image-portus/blob/master/build/startup.sh
Donc, vous voyez, le point d'entrée de la stratégie est très fréquent et très puissant et je suppose à aller dans cette voie quand vous le pouvez.
c) Dérivée des images
Peut-être pour "l'exhaustivité", l'image-résultent de la stratégie, de sorte que vous avez-vous image de base appelé "myapp" et pour l'installation de X vous créez une nouvelle image
Et d'appeler cette image myapp:x - le problème évident avec ce qui est, vous finissez par avoir beaucoup d'images, de l'autre côté, par rapport à a) elle est beaucoup plus portable.
Espère que ça aide
OriginalL'auteur Eugen Mayer
Il suffit d'exécuter à partir de la même image autant de fois que nécessaire. De nouveaux conteneurs seront créés, et ils peuvent alors être démarré et arrêté à chacun de sauver sa propre configuration. Pour votre commodité serait mieux de donner à chacun de vos conteneurs un nom avec "--nom".
F. i:
.
Après que vous avez vos contenants jamais créé, vous pouvez démarrer et arrêter comme VMs.
OriginalL'auteur DimiDak
Chaque conteneur s'exécute avec les mêmes RO image mais avec un RW conteneur spécifique du système de fichiers de la couche. Le résultat est chaque conteneur peut avoir ses propres fichiers qui sont distincts de tous les autres conteneurs.
Vous pouvez passer à la configuration de la CLI, comme une variable d'environnement, ou l'unique point de montage de volume. C'est un très standard en cas d'utilisation de Docker.
Vous souhaitez partager le fichier conf dans chaque récipient comme un volume. Un volume peut être un répertoire ou un fichier individuel.
OriginalL'auteur BMitch