2016-10-01 4 views
3

Je ne suis pas sûr de savoir quelle est la meilleure pratique de l'utilisation du conteneur docker. Lorsque j'utilise VM, disons ubuntu, pour exécuter une application Web, j'installe tous les logiciels dont j'ai besoin pour exécuter l'application, comme la base de données, les services Web, etc. et les utiliser comme un système d'exploitation autonome.docker os conteneur vs app conteneur

Cependant, Docker peut être utilisé d'une manière différente.

Dans un scénario donné que je veux exécuter une application Web, j'ai deux options:

  1. installer tous les logiciels sur un conteneur; installez la base de données, Java, et tous les autres logiciels nécessaires pour exécuter (c'est-à-dire utiliser comme j'utiliserais VM). Installer chaque application sur des contenants distincts; base de données dans un conteneur, service Web sur l'autre conteneur et les faire se parler.

L'option 1) semble être plus facile à déployer une application complète empilés, mais peut être plus difficile à l'échelle s'il y a des problèmes de complications de dépendance entre les paquets ou l'allocation des ressources OS à chaque logiciel. L'option 2) semble être plus difficile à déployer, mais chaque conteneur peut être amélioré sans trop de douleur.

Quelle est la pratique courante chez les utilisateurs de Docker?

Edit: réponse à cette question est également noté dans https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#run-only-one-process-per-container

Répondre

4

La meilleure façon est d'utiliser un récipient séparé pour chaque service (application). De cette façon, vous pouvez mettre à niveau/modifier chaque service indépendamment des autres conteneurs. Docker fonctionne vraiment bien pour l'architecture de micro service. Utilisez Docker Compose pour exécuter tous les conteneurs avec une seule commande: docker-compose up. Dans Docker Compose, vous pouvez définir des dépendances entre les conteneurs. Donc, ils se connecteront automatiquement.

Si vous souhaitez exécuter chaque conteneur sur un hôte Linux distinct, vous pouvez utiliser Docker Swarm pour ne pas avoir à vous soucier de la mise en réseau.