Exécuter des conteneurs à l'intérieur d'une machine virtuelle?

15

Je crois comprendre que les conteneurs sont beaucoup plus légers que les machines virtuelles car ils ne virtualisent pas le matériel, mais isolent simplement le logiciel qui y est exécuté du logiciel exécuté dans d'autres conteneurs sur le système.

Ma situation est telle que je ne peux pas me permettre d'acheter des serveurs supplémentaires, et les serveurs que je possède exécutent tous des hyperviseurs. J'ai besoin de provisionner au moins 6 "serveurs" pour héberger des instances d'une application web relativement petite (chaque instance est pour un client différent). Il serait inutile de fournir une nouvelle machine virtuelle pour chacun de ces serveurs, je prévois donc de configurer 2 machines virtuelles et effectuez l'une des opérations suivantes:

  1. Exécutez plusieurs instances de l'application sur chaque machine virtuelle à l'aide d'hôtes virtuels (apache). ou
  2. Mettre en place des conteneurs sur les VMs qui me permettraient d'isoler les environnements.

Compte tenu de cela, y a-t-il un surcoût non négligeable associé aux systèmes de conteneurs qui ferait une mauvaise idée de les utiliser dans une machine virtuelle, ou y a-t-il une autre raison technique pour laquelle je ne voudrais pas utiliser de conteneurs?

Chris L
la source

Réponses:

13

Docker est TRÈS léger par rapport à une machine virtuelle et un système de machine virtuelle devrait fonctionner parfaitement avec des conteneurs en cours d'exécution. Chaque conteneur fonctionne essentiellement comme un système isolé, il est donc très bon pour l'isolement du point de vue de la stabilité du système. D'après votre description, cela ressemble au cas d'utilisation idéal pour Docker. Si vous expérimentez avec Docker, assurez-vous d'utiliser la version la plus récente possible, certaines des anciennes contiennent des vulnérabilités assez désagréables. Il existe certaines considérations de sécurité lors de l'exécution de Docker.

SELinux - SELinux est compatible avec les conteneurs et créera automatiquement une étiquette MCS nommée au hasard pour chaque conteneur. Cela permet d'assurer l'isolement, car les conteneurs LXC ne sont pas considérés comme véritablement «contenant» par eux-mêmes, bien que cela s'améliore.

Directive USER - Dans chaque Dockerfile, il est recommandé d'utiliser la directive USER et de faire exécuter l'utilisateur en tant que compte autre que root, la valeur par défaut. Le hic ici est que l'utilisateur doit exister sur le système. Cela peut également être frustrant pour les nouveaux fichiers et répertoires chowning / chmodding pour ce nouvel utilisateur, mais cela contribue à réduire vos risques. Je recommande généralement de créer un "utilisateur de conteneur" ou quelque chose comme ça sur vos systèmes pour vous assurer qu'un utilisateur commun est disponible sur tous les systèmes qui ne chevauchent aucune autre partie du système.

Sinon, la partie la plus difficile est de gérer les conteneurs et de les mettre à jour si nécessaire.

theterribletrivium
la source
3

y a-t-il un surcoût non négligeable associé aux systèmes de conteneurs qui ferait une mauvaise idée de les utiliser à l'intérieur d'une machine virtuelle

Est -ce que Docker conteneurs Performance dans VMware vSphere vous aider?

ou y a-t-il une autre raison technique pour laquelle je ne voudrais pas utiliser de conteneurs?

Je ne connais pas Docker en général parce que je n'ai pas encore travaillé avec. Je pense que le logiciel de gestion manque encore de maturité par rapport au logiciel de gestion de VM ... mais je suis un administrateur vSphere et donc probablement biaisé.

Compte tenu de Docker sur les machines virtuelles, CoreOS est désormais officiellement pris en charge sur vSphere 5.5 . Donc, au moins VMware pense que Docker / conteneurs sur les machines virtuelles est OK.

Mario Lenz
la source