2197 votes

Dois-je utiliser Vagrant ou Débardeur.io pour la création d'un environnement isolé?

J'utilise ubuntu pour le développement et le déploiement, et ont un besoin de création d'un isolé env.

J'envisage soit de l'errance ou de docker.io pour ce but ? Quelqu'un peut m'aider avec les avantages et les inconvénients, ou une comparaison de ces deux solutions.

2420voto

Mitchell Points 6646

Avertissement: j'ai écrit Vagabond! Mais parce que j'ai écrit, Vagabond, je passe la plupart de mon temps dans la DevOps monde qui comprend des logiciels comme Docker. Je travaille avec beaucoup d'entreprises à l'aide de l'Errance et de l'utilisation de nombreux Docker, et je vois comment les deux entrent en interaction.

Avant que je parle trop, une réponse directe: dans votre scénario spécifique (vous travailler seul, sur Linux, en utilisant le Panneau de la production), vous pouvez coller avec Docker seul et simplifier les choses. Dans de nombreux autres scénarios (je discuter de la suite), il n'est pas si facile.

Il n'est pas correct de comparer directement les Vagabonds de Docker. Dans certains scénarios, ils ne se chevauchent, et dans la grande majorité, ils n'en ont pas. En fait, le plus apte comparaison serait Vagrant rapport à quelque chose comme Boot2Docker (minimal OS qui peuvent s'exécuter Docker). Vagrant est un niveau au-dessus de Docker en termes d'abstractions, de sorte qu'il n'est pas une comparaison équitable, dans la plupart des cas.

Vagrant lance choses pour faire fonctionner des applications/services pour des fins de développement. Cela peut être sur VirtualBox, VMware. Il peut être à distance comme AWS, OpenStack. À l'intérieur de ceux-ci, si vous utilisez des récipients, l'Errance ne se soucient pas, et l'embrasse: il permet d'installer automatiquement, tirer vers le bas, créer et exécuter des conteneurs Docker, par exemple. Avec Vagrant 1.6, Vagabond a docker environnements de développement, et prend en charge l'utilisation Docker avec le même flux de travail en tant que Vagabond à travers Linux, Mac et Windows. Vagabond n'essaie pas de remplacer le Panneau ici, il embrasse Docker pratiques.

Menu fixe spécifiquement pistes de conteneurs Docker. Si vous êtes à la comparer directement à l'Errance: il s'agit précisément d'un plus spécifiques (pouvez uniquement exécuter des conteneurs Docker), moins flexible (nécessite Linux ou Linux hôte quelque part) solution. Bien sûr, si vous parlez de la production ou de la CI, il n'y a pas de comparaison à Vagrant! Vagabond n'habite pas dans ces environnements, et ainsi de Débardeur doit être utilisé.

Si votre organisation ne s'exécute que des conteneurs Docker pour tous leurs projets et n'a que les développeurs sous Linux, alors ok, Docker peut certainement travailler pour vous!

Sinon, je ne vois pas l'avantage de la tentative d'utilisation de Docker seul, car vous perdez beaucoup de ce Vagabond a à offrir, qui ont un véritable business et de la productivité des avantages:

  • Vagrant pouvez lancer VirtualBox, VMware, AWS, OpenStack, etc. machines. Il n'a pas d'importance ce que vous avez besoin, Vagrant pouvez le lancer. Si vous utilisez le Panneau, Vagrant pouvez installer Docker sur l'un de ces, vous pouvez les utiliser à cette fin.

  • Vagrant est un flux de travail unique pour tous vos projets. Ou de mettre une autre manière, c'est juste une chose que les gens doivent apprendre à gérer un projet que ce soit dans un conteneur Docker ou pas. Si, par exemple, dans l'avenir, un concurrent se pose à rivaliser directement avec Docker, Vagrant sera en mesure d'exécuter aussi.

  • Vagrant fonctionne sur Windows (XP), Mac (10.5), et Linux (noyau 2.6). Dans les trois cas, le flux de travail est le même. Si vous utilisez le Panneau, Vagrant pouvez lancer une machine (machine virtuelle ou à distance) qui peuvent s'exécuter Docker sur chacun de ces trois systèmes.

  • Vagrant sait comment configurer certains avancé ou non les choses triviales comme le réseautage et la synchronisation des dossiers. Par exemple: Vagrant sait comment joindre une adresse IP statique à une machine ou un forwarder les ports, et la configuration est la même quel que soit le système que vous utilisez (VirtualBox, VMware, etc.) Pour les dossiers synchronisé, Vagabond propose plusieurs mécanismes pour obtenir vos fichiers locaux sur la machine distante (VirtualBox dossiers partagés, NFS, rsync, Samba [plugin], etc.). Si vous utilisez le Panneau, même Docker avec une VM sans Vagabond, vous devez manuellement le faire, ou ils auraient à réinventer l'Errance dans ce cas.

  • Vagrant 1.6 a soutien de première classe pour docker environnements de développement. Ce ne sera pas de lancer une machine virtuelle sous Linux, et va automatiquement lancer une machine virtuelle sur Mac et Windows. Le résultat final est que le travail avec Docker est uniforme sur toutes les plateformes, tandis que Vagrant toujours gère les détails fastidieux de choses telles que la mise en réseau, les dossiers synchronisé, etc.

Afin de répondre à certaines contre-arguments que j'ai entendu en faveur de l'utilisation de Docker au lieu de l'Errance:

  • "Il est de moins en moins de pièces en mouvement" - Oui, il peut être, si vous utilisez le Panneau exclusivement pour chaque projet. Même alors, c'est sacrifier la flexibilité pour le Panneau de verrouillage. Si vous décidez de ne pas utiliser Docker pour tout projet, le passé, le présent ou l'avenir, alors vous aurez plus de pièces mobiles. Si vous aviez utilisé, Vagabond, vous avez qu'une seule partie mobile qui prend en charge le reste.

  • "C'est plus rapide!" - Une fois que vous avez l'hôte qui peut fonctionner Linux containers, Docker est certainement plus rapide à l'exécution d'un conteneur que n'importe quelle machine virtuelle devrait se lancer. Mais le lancement d'une machine virtuelle (ou à distance de la machine) est un coût unique. Au cours de la journée, la plupart des Vagabonds utilisateurs n'ont jamais fait de détruire leur VM. C'est une étrange optimisation pour les environnements de développement. Dans la production, où Docker brille vraiment, je comprends la nécessité de rapidement spin up/down conteneurs.

J'espère maintenant que son évident de voir qu'il est très difficile, et je crois ne pas les corriger, de les comparer menu fixe à l'Errance. Pour les environnements de dev, Vagrant est plus abstrait, plus général. Docker (et les différentes manières de le faire se comporter comme Vagrant) est un cas d'utilisation spécifiques de l'Errance, en ignorant tout le reste, Vagabond a à offrir.

En conclusion: en très des cas d'utilisation spécifiques, Docker est certainement un remplacement possible pour Vagrant. Dans la plupart des cas, il n'est pas. Vagrant pour ne pas nuire à votre utilisation de Docker; en fait, il fait ce qu'il peut pour rendre cette expérience plus lisse. Si vous trouvez que ce n'est pas vrai, je suis heureux de prendre les suggestions pour améliorer les choses, puisque l'objectif de Vagrant est de travailler aussi bien avec n'importe quel système.

Espérons que cela efface les choses!

1493voto

Solomon Hykes Points 6133

Je suis l'auteur de Docker.

La réponse courte est que si vous voulez gérer les machines, vous devez utiliser Vagrant. Et si vous voulez construire et exécuter des applications des environnements, vous devez utiliser Docker.

Vagrant est un outil pour gérer des machines virtuelles. Docker est un outil de création et de déploiement d'applications par l'emballage en léger conteneurs. Un conteneur peut contenir à peu près de tout composant logiciel ainsi que ses dépendances (exécutables, les bibliothèques, les fichiers de configuration, etc.), et de l'exécuter dans un garanti et reproductible de l'environnement d'exécution. De ce fait, il est très facile de construire votre application une fois et de le déployer n'importe où sur votre ordinateur portable pour le test, puis sur des serveurs différents pour vivre de déploiement, etc.

C'est une idée fausse commune que vous ne pouvez utiliser Docker sur Linux. C'est incorrect, vous pouvez également installer Docker sur Mac, et de support de Windows est en cours. Lorsqu'il est installé sur Mac, Docker bundles une petite machine virtuelle linux (25 MO sur le disque!) qui agit comme un wrapper pour votre conteneur. Une fois installé, ce qui est complètement transparent, vous pouvez utiliser le panneau de commande de la ligne exactement de la même manière. Cela vous donne le meilleur des deux mondes: vous pouvez tester et développer votre application à l'aide de conteneurs, qui sont très léger, facile à réaliser et facile à déplacer (voir, par exemple, https://index.docker.io pour le partage de contenants réutilisables avec le support de la communauté), et vous n'avez pas besoin de vous soucier des moindres détails de la gestion des machines virtuelles, qui sont juste un moyen pour une fin de toute façon.

En théorie, il est possible d'utiliser Vagrant comme une couche d'abstraction pour Docker. Je recommande à l'encontre de ce pour 2 raisons:

  • Tout d'abord, l'Errance n'est pas une bonne abstraction de Docker. Vagabond a été conçu pour gérer des machines virtuelles. Le panneau a été conçu pour gérer l'exécution de l'application. Cela signifie que Docker, de par leur conception, peuvent interagir avec une application en fonction de la richesse des moyens, et a plus d'informations sur l'exécution de l'application. Les primitives de Docker sont les processus, les flux de journalisation, les variables d'environnement de réseau et les liens entre les composants. Les primitives d'Errance sont des machines, des périphériques blocs, et des clés ssh. Vagrant est simplement plus bas dans la pile, et la seule façon qu'il peut interagir avec un conteneur est en prétendant que c'est juste un autre type de machine, que vous pouvez "boot" et "se connecter". Alors, bien sûr, vous pouvez taper "erratique" avec un menu fixe plugin et quelque chose va se passer. Est-il un substitut pour toute l'étendue de ce Panneau peut faire? Essayez natif de Docker pour un couple de jours et de voir par vous-même :)

  • Deuxièmement, le lock-en argument. "Si vous utilisez l'Errance comme une abstraction, vous ne serez pas enfermé dans le Panneau!". Du point de vue de l'Errance, qui est conçu pour gérer des machines, c'est parfaitement logique: ne sont pas des contenants juste un autre type de machine? Tout comme EC2 et VMWare, nous devons être prudents de ne pas lier nos outils de configuration d'un fournisseur en particulier! Cela permettrait de créer un verrouillage plus abstrait tout de suite avec Vagrant. Sauf que ce n'est pas la question de Docker entièrement. Docker n'est pas la fourniture de machines, il enveloppe votre application dans un léger portable runtime qui peuvent être déposés n'importe où. Ce runtime vous choisissez pour votre application n'a rien à voir avec la façon dont vous disposition de vos machines! Par exemple, il est assez fréquent de déployer des applications sur des machines qui sont mis en service par quelqu'un d'autre (par exemple une instance EC2 déployés par votre administrateur de système, peut-être à l'aide de l'Errance), ou pour mettre à nu le métal des machines qui Vagrant ne pouvez pas du tout. À l'inverse, vous pouvez utiliser Vagrant à disposition des machines qui n'ont rien à voir avec le développement de votre application - par exemple, un prêt-à-utiliser Windows IIS boîte ou quelque chose. Ou vous pouvez utiliser Vagrant à disposition des machines pour des projets qui n'utilisent pas le menu fixe - peut-être qu'ils utilisent une combinaison de rubygems et rvm pour la gestion de la dépendance et de sandboxing, par exemple.

En résumé: Vagrant est pour la gestion des machines, Docker est pour la construction et l'exécution de environnements de l'application.

1189voto

creack Points 11635

Si votre but est de l'isolation, je pense que docker est ce que vous voulez.

Vagrant est un gestionnaire de machine virtuelle, il permet de faire un script de configuration de la machine virtuelle ainsi que la mise en service. Cependant, il est toujours une machine virtuelle en fonction Virtual Box (ou autres) avec une surcharge énorme. Il vous oblige à avoir un fichier du disque dur qui peut être énorme, il faut beaucoup de ram, et de la performance peut être pas très bon.

Le panneau d'autre part utilise un noyau cgroup et namespacing par lxc. Cela signifie que vous êtes en utilisant le même noyau que l'hôte et le même système de fichiers. Vous pouvez utiliser Dockerfile avec l' docker build commande afin de gérer l'approvisionnement et la configuration de votre conteneur. Vous avez l'exemple à docs.débardeur.io sur la façon de faire de votre Dockerfile, il est très intuitif.

La seule raison pour laquelle vous voulez utiliser vagrant est si vous avez besoin de faire BSD, Windows ou d'autres non-développement de linux sur votre ubuntu boîte. Sinon, passez par le Panneau.

88voto

Chris Bushell Points 495

Je préface ma réponse en admettant que je n'ai aucune expérience avec menu fixe, autres que comme un fervent observateur de ce qui semble être un de vraiment génial solution c'est de gagner beaucoup de traction.

J'ai une quantité décente de l'expérience avec Vagrant et la recommande fortement. C'est certainement un des plus luxueux de la solution en termes de VM à partir au lieu de LXC base. Cependant, j'ai trouvé un ordinateur portable décent (8go de ram, i5/i7 CPU) n'a aucun mal à l'exécution d'une VM à l'aide de Vagrant/Virtual Box à côté des outils de développement.

Une des choses vraiment super avec Vagrant est l'intégration avec Puppet/Chef/Shell scripts pour l'automatisation de la configuration. Si vous utilisez l'une de ces options pour configurer votre environnement de production, vous pouvez créer un environnement de développement qui est le plus près identiques que vous allez obtenir, et c'est exactement ce que vous voulez.

L'autre grande chose avec Vagrant est que vous pouvez la version de votre Vagrantfile avec le code de votre application. Cela signifie que tous les membres de votre équipe peuvent partager ce fichier et vous avez la garantie que tout le monde travaille avec la même configuration de l'environnement.

Il est intéressant de noter, Vagrant et Docker peut effectivement être gratuit. L'errance peut être étendu pour prendre en charge les différents fournisseurs de virtualisation, et il peut être possible que Docker est un tel fournisseur qui obtient un soutien dans le proche avenir. Voir https://github.com/dotcloud/docker/issues/404 pour une discussion récente sur le sujet.

54voto

GnarlinBrando Points 399

Vagrant-lxc est un plugin pour Vagrant qui vous permettra d'utiliser un conteneur LXC à disposition Vagrant. Il n'a pas toutes les fonctionnalités que le défaut vagrant VM (VirtualBox) a, mais il devrait vous permettre plus de souplesse que les conteneurs docker. Il y a une vidéo dans le lien montrant ses capacités qui vaut la peine de regarder.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X