Plusieurs images à l'intérieur d'un conteneur
Alors, voici le problème, je besoin de faire certains développement et pour cela j'ai besoin des paquets suivants:
- MongoDb
- NodeJs
- Nginx
- RabbitMq
- Redis
Une option, c'est que je prends une image Ubuntu, de créer un conteneur et commencer à les installer un par un et de fait, de démarrer mon serveur, et d'exposer les ports.
Mais cela peut facilement être fait dans une virtual box aussi, et il ne va pas utiliser la puissance de Docker. Donc, pour ce que j'ai commencer la construction de ma propre image avec ces forfaits. Maintenant, voici la question si je commence à écrire mon Dockerfile et si placer les commandes pour télécharger le Node js (et d'autres) à l'intérieur de tout cela, c'est de nouveau la même chose comme la virtualisation.
Ce dont j'ai besoin, c'est que je de démarrage de Ubuntu et de garder sur ajoutant la références de MongoDb, NodeJs, RabbitMq, Nginx et Redis à l'intérieur de la Dockerfile et enfin exposer les ports respectifs.
Voici les questions que je:
- Est-ce possible? Comme l'ajout des références à d'autres images à l'intérieur de la Dockerfile lorsque vous démarrez à PARTIR d'une image de base.
- Si oui, alors comment?
- Aussi est-ce la bonne pratique ou pas?
- Comment faire ce genre de choses dans le Panneau ?
Merci d'avance.
Merci @tillaert; regarder dans.
OriginalL'auteur Ankur Verma | 2017-07-21
Vous devez vous connecter pour publier un commentaire.
Garder les images de la lumière. Exécuter un service par conteneur. Utiliser les images officielles sur docker hub pour mongodb, nodejs, rabbitmq, nginx, etc. Prolonger si nécessaire. Si vous souhaitez exécuter le tout dans un gros récipient que vous pourriez tout aussi bien utiliser une machine virtuelle.
Vous pouvez bien sur faire des trucs dingues dans un dev de l'installation, mais pourquoi passer du temps la mise en place de quelque chose qui a zéro valeur dans un environnement de production? Que faire si vous avez besoin à l'échelle de l'un des services? Comment définir la mémoire et le processeur contraintes de chaque service? .. et la liste est longue.
Ne font pas monolithique conteneurs.
Une bonne façon de commencer est d'utiliser docker-composition de configurer un ensemble de services qui peuvent parler les uns aux autres. Vous pouvez faire une prod et dev de la version de votre
docker-compose.yml
fichier.Obtenir dans le bon état d'esprit
Dans un monde parfait, vous devez exécuter vos conteneurs en cluster environnement de la production pour être en mesure à l'échelle de votre système et de la concurrence, mais que peut-être exagéré en fonction de ce que vous êtes en cours d'exécution. C'est au moins bon d'avoir présent à l'arrière de votre tête, car il peut vous aider à prendre les bonnes décisions.
Quelques éléments de réflexion si vous voulez être un puriste :
Vous pouvez bien sûr faire des choses sales dans dev telles que la cartographie de l'hôte volumes de stockage persistant (et beaucoup de gens qui utilisent le panneau autonome en prod en faire autant).
Idéalement, nous devrions séparer le panneau de dev et docker je prod. Docker est un outil fantastique au cours du développement que vous pouvez avoir redis, memcache, postgresql, mongodb, rabbitmq, nœud ou que sais-je encore opérationnel en quelques minutes de partage qui composent le programme d'installation avec le reste de l'équipe. Docker en prod, peut être complètement différente de la bête.
Je tiens aussi à ajouter que je suis généralement contre le fanatisme que "tout doit être en cours d'exécution dans le panneau" en prod. Exécuter les services dans le panneau lorsque cela a du sens. Il n'est également pas rare que de grandes entreprises à faire leurs propres images de base. Cela peut être beaucoup de travail et nécessite un entretien à garder en place avec les correctifs de sécurité, etc. Il n'est pas forcément la première chose que vous sauter sur la lors du démarrage avec docker.
Vous pouvez commencer par utiliser docker-composer. Décrit tout dans un fichier yml.
Ok, +1 et encore merci pour les précieux pensées.
Je l'ai étendu ma réponse beaucoup. Qui pourrait éventuellement vous aider à obtenir dans le bon état d'esprit.
Merci man, maintenant j'ai besoin de lire sur la façon de coudre l'ensemble de ma pile de développement, et de le faire fonctionner autour de docker. Assez complexe, il serait. Merci encore.
OriginalL'auteur Grimmy