Ich verwende Ubuntu für die Entwicklung und Bereitstellung und muss eine isolierte Umgebung erstellen.
Zu diesem Zweck erwäge ich entweder Vagrant oder Docker. Was sind die Vor- und Nachteile oder wie vergleichen sich diese Lösungen?
Ich verwende Ubuntu für die Entwicklung und Bereitstellung und muss eine isolierte Umgebung erstellen.
Zu diesem Zweck erwäge ich entweder Vagrant oder Docker. Was sind die Vor- und Nachteile oder wie vergleichen sich diese Lösungen?
Antworten:
Wenn Ihr Zweck die Isolation ist, denke ich, dass Docker das ist, was Sie wollen.
Vagrant ist ein Manager für virtuelle Maschinen. Sie können die Konfiguration der virtuellen Maschine sowie die Bereitstellung per Skript ausführen. Es ist jedoch immer noch eine virtuelle Maschine, die von VirtualBox (oder anderen) abhängig ist und einen enormen Overhead aufweist. Es erfordert eine Festplattendatei, die sehr groß sein kann, viel RAM benötigt und die Leistung möglicherweise nicht sehr gut ist.
Docker hingegen verwendet die Kernel-Gruppe und den Namespace über LXC . Dies bedeutet, dass Sie denselben Kernel wie den Host und dasselbe Dateisystem verwenden. Sie können Dockerfile mit dem docker build
Befehl verwenden, um die Bereitstellung und Konfiguration Ihres Containers zu übernehmen. Unter docs.docker.com finden Sie ein Beispiel zum Erstellen Ihrer Docker-Datei. es ist sehr intuitiv.
Der einzige Grund, warum Sie Vagrant verwenden möchten, ist, wenn Sie BSD-, Windows- oder andere Nicht-Linux-Entwicklungen auf Ihrer Ubuntu-Box durchführen müssen. Andernfalls wählen Sie Docker.
Haftungsausschluss: Ich habe Vagrant geschrieben! Aber weil ich Vagrant geschrieben habe, verbringe ich die meiste Zeit in der DevOps-Welt, die Software wie Docker enthält. Ich arbeite mit vielen Unternehmen zusammen, die Vagrant verwenden, und viele verwenden Docker, und ich sehe, wie die beiden zusammenspielen.
Bevor ich zu viel rede, eine direkte Antwort: In Ihrem speziellen Szenario (Sie arbeiten alleine, arbeiten unter Linux, verwenden Docker in der Produktion) können Sie sich nur an Docker halten und die Dinge vereinfachen. In vielen anderen Szenarien (die ich weiter diskutiere) ist es nicht so einfach.
Es ist nicht richtig, Vagrant direkt mit Docker zu vergleichen. In einigen Szenarien überschneiden sie sich und in der überwiegenden Mehrheit nicht. Tatsächlich wäre der passendere Vergleich Vagrant mit etwas wie Boot2Docker (minimales Betriebssystem, auf dem Docker ausgeführt werden kann). Vagrant ist in Bezug auf Abstraktionen eine Stufe über Docker, daher ist es in den meisten Fällen kein fairer Vergleich.
Vagrant startet Dinge, um Apps / Dienste zum Zweck der Entwicklung auszuführen. Dies kann auf VirtualBox, VMware sein. Es kann Remote wie AWS, OpenStack sein. In diesen Fällen ist es Vagrant egal, ob Sie Container verwenden, und dies wird berücksichtigt: Es kann beispielsweise Docker-Container automatisch installieren, herunterziehen, erstellen und ausführen. Mit Vagrant 1.6 verfügt Vagrant über Docker-basierte Entwicklungsumgebungen und unterstützt die Verwendung von Docker mit demselben Workflow wie Vagrant unter Linux, Mac und Windows. Vagrant versucht hier nicht, Docker zu ersetzen, sondern umfasst Docker-Praktiken.
Docker führt speziell Docker-Container aus. Wenn Sie direkt mit Vagrant vergleichen: Es handelt sich um eine spezifischere (kann nur Docker-Container ausführen), weniger flexible Lösung (erfordert irgendwo Linux oder einen Linux-Host). Wenn es um Produktion oder CI geht, gibt es natürlich keinen Vergleich zu Vagrant! Vagrant lebt nicht in diesen Umgebungen, daher sollte Docker verwendet werden.
Wenn Ihre Organisation nur Docker-Container für alle ihre Projekte ausführt und nur Entwickler unter Linux ausgeführt werden, könnte Docker definitiv für Sie arbeiten!
Ansonsten sehe ich keinen Vorteil darin, Docker alleine zu verwenden, da Sie viel von dem verlieren, was Vagrant zu bieten hat, was echte Geschäfts- / Produktivitätsvorteile hat:
Vagrant kann VirtualBox-, VMware-, AWS-, OpenStack- usw. Computer starten. Es ist egal, was Sie brauchen, Vagrant kann es starten. Wenn Sie Docker verwenden, kann Vagrant Docker auf jedem dieser Geräte installieren, damit Sie sie für diesen Zweck verwenden können.
Vagrant ist ein einziger Workflow für alle Ihre Projekte. Oder anders ausgedrückt: Es ist nur eine Sache, die Menschen lernen müssen, um ein Projekt auszuführen, unabhängig davon, ob es sich in einem Docker-Container befindet oder nicht. Wenn zum Beispiel in Zukunft ein Konkurrent auftaucht, um direkt mit Docker zu konkurrieren, kann Vagrant dies auch ausführen.
Vagrant funktioniert unter Windows (zurück zu XP), Mac (zurück zu 10.5) und Linux (zurück zu Kernel 2.6). In allen drei Fällen ist der Workflow der gleiche. Wenn Sie Docker verwenden, kann Vagrant einen Computer (VM oder Remote) starten, auf dem Docker auf allen drei dieser Systeme ausgeführt werden kann.
Vagrant weiß, wie man einige fortgeschrittene oder nicht triviale Dinge wie das Vernetzen und Synchronisieren von Ordnern konfiguriert. Beispiel: Vagrant weiß, wie eine statische IP an einen Computer oder an Weiterleitungsports angehängt wird, und die Konfiguration ist unabhängig vom verwendeten System (VirtualBox, VMware usw.) dieselbe. Für synchronisierte Ordner bietet Vagrant mehrere Mechanismen, um Ihre lokalen Ordner abzurufen Dateien auf den Remote-Computer übertragen (freigegebene VirtualBox-Ordner, NFS, rsync, Samba [Plugin] usw.). Wenn Sie Docker verwenden, selbst Docker mit einer VM ohne Vagrant, müssen Sie dies manuell tun, oder Vagrant muss in diesem Fall neu erfunden werden.
Vagrant 1.6 bietet erstklassige Unterstützung für Docker-basierte Entwicklungsumgebungen . Dies startet keine virtuelle Maschine unter Linux und startet automatisch eine virtuelle Maschine unter Mac und Windows. Das Endergebnis ist, dass die Arbeit mit Docker auf allen Plattformen einheitlich ist, während Vagrant immer noch die mühsamen Details von Dingen wie Netzwerken, synchronisierten Ordnern usw. behandelt.
Um bestimmte Gegenargumente anzusprechen, die ich zugunsten der Verwendung von Docker anstelle von Vagrant gehört habe:
"Es sind weniger bewegliche Teile" - Ja, es kann sein, wenn Sie Docker ausschließlich für jedes Projekt verwenden. Selbst dann wird die Flexibilität für das Docker-Lock-In geopfert. Wenn Sie sich jemals dafür entscheiden, Docker nicht für ein Projekt, eine Vergangenheit, Gegenwart oder Zukunft zu verwenden, haben Sie mehr bewegliche Teile. Wenn Sie Vagrant verwendet haben, haben Sie das eine bewegliche Teil, das den Rest unterstützt.
"Es ist schneller!" - Sobald Sie den Host haben, auf dem Linux-Container ausgeführt werden können, kann Docker einen Container definitiv schneller ausführen als jede virtuelle Maschine. Das Starten einer virtuellen Maschine (oder Remote-Maschine) ist jedoch einmalig. Im Laufe des Tages zerstören die meisten Vagrant-Benutzer ihre VM nie wirklich. Es ist eine seltsame Optimierung für Entwicklungsumgebungen. In der Produktion, in der Docker wirklich glänzt, verstehe ich die Notwendigkeit, Container schnell hoch- und runterzudrehen.
Ich hoffe jetzt ist klar, dass es sehr schwierig und meiner Meinung nach nicht richtig ist, Docker mit Vagrant zu vergleichen. Für Entwicklerumgebungen ist Vagrant abstrakter und allgemeiner. Docker (und die verschiedenen Möglichkeiten, wie Sie es wie Vagrant verhalten können) ist ein spezieller Anwendungsfall von Vagrant, bei dem alles ignoriert wird, was Vagrant zu bieten hat.
Fazit: In hochspezifischen Anwendungsfällen ist Docker sicherlich ein möglicher Ersatz für Vagrant. In den meisten Anwendungsfällen ist dies nicht der Fall. Vagrant behindert Ihre Nutzung von Docker nicht. Es tut tatsächlich alles, um diese Erfahrung reibungsloser zu gestalten. Wenn Sie feststellen, dass dies nicht der Fall ist, nehme ich gerne Vorschläge zur Verbesserung der Dinge an, da ein Ziel von Vagrant darin besteht, mit jedem System gleich gut zu arbeiten.
Hoffe das klärt die Dinge auf!
vagrant provision
) aktualisieren .
Ich bin der Autor von Docker.
Die kurze Antwort lautet: Wenn Sie Maschinen verwalten möchten, sollten Sie Vagrant verwenden. Wenn Sie Anwendungsumgebungen erstellen und ausführen möchten, sollten Sie Docker verwenden.
Vagrant ist ein Tool zum Verwalten von virtuellen Maschinen. Docker ist ein Tool zum Erstellen und Bereitstellen von Anwendungen, indem diese in leichte Container gepackt werden. Ein Container kann so ziemlich jede Softwarekomponente zusammen mit ihren Abhängigkeiten (ausführbare Dateien, Bibliotheken, Konfigurationsdateien usw.) enthalten und in einer garantierten und wiederholbaren Laufzeitumgebung ausführen. Dies macht es sehr einfach, Ihre App einmal zu erstellen und überall bereitzustellen - auf Ihrem Laptop zum Testen, dann auf verschiedenen Servern für die Live-Bereitstellung usw.
Es ist ein weit verbreitetes Missverständnis, dass Sie Docker nur unter Linux verwenden können. Das ist falsch; Sie können Docker auch auf Mac und Windows installieren. Bei der Installation auf einem Mac bündelt Docker eine winzige Linux-VM (25 MB auf der Festplatte!), Die als Wrapper für Ihren Container fungiert. Einmal installiert, ist dies vollständig transparent; Sie können die Docker-Befehlszeile genauso verwenden. Dies bietet Ihnen das Beste aus beiden Welten: Sie können Ihre Anwendung mit Containern testen und entwickeln, die sehr leicht, leicht zu testen und leicht zu bewegen sind (siehe zum Beispiel https://hub.docker.com für die Freigabe wiederverwendbarer Container mit die Docker-Community), und Sie müssen sich keine Gedanken über die Details der Verwaltung virtueller Maschinen machen, die ohnehin nur ein Mittel zum Zweck sind.
Theoretisch ist es möglich, Vagrant als Abstraktionsschicht für Docker zu verwenden. Ich empfehle aus zwei Gründen dagegen:
Erstens ist Vagrant keine gute Abstraktion für Docker. Vagrant wurde entwickelt, um virtuelle Maschinen zu verwalten. Docker wurde entwickelt, um eine Anwendungslaufzeit zu verwalten. Dies bedeutet, dass Docker von Natur aus auf umfassendere Weise mit einer Anwendung interagieren kann und über mehr Informationen zur Laufzeit der Anwendung verfügt. Die Grundelemente in Docker sind Prozesse, Protokolldatenströme, Umgebungsvariablen und Netzwerkverbindungen zwischen Komponenten. Die Grundelemente in Vagrant sind Maschinen, Blockgeräte und SSH-Schlüssel. Vagrant sitzt einfach tiefer im Stapel, und die einzige Möglichkeit, mit einem Container zu interagieren, besteht darin, so zu tun, als sei es nur eine andere Art von Maschine, die Sie "booten" und "anmelden" können. Sie können also mit einem Docker-Plugin "vagrant up" eingeben, und es wird etwas Hübsches passieren. Ist es ein Ersatz für die volle Bandbreite dessen, was Docker tun kann? Probieren Sie native Docker für ein paar Tage aus und überzeugen Sie sich selbst :)
Zweitens das Lock-In-Argument. "Wenn Sie Vagrant als Abstraktion verwenden, werden Sie nicht an Docker gebunden!" Aus Sicht von Vagrant, das für die Verwaltung von Maschinen ausgelegt ist, ist dies durchaus sinnvoll: Sind Container nicht nur eine andere Art von Maschine? Genau wie bei Amazon EC2 und VMware müssen wir darauf achten, unsere Bereitstellungstools nicht an einen bestimmten Anbieter zu binden! Dies würde Lock-In schaffen - besser, um alles mit Vagrant zu abstrahieren. Nur dass dies den Punkt von Docker völlig verfehlt. Docker stellt keine Maschinen bereit. Es verpackt Ihre Anwendung in eine leichte tragbare Laufzeit, die überall abgelegt werden kann.
Welche Laufzeit Sie für Ihre Anwendung wählen, hat nichts damit zu tun, wie Sie Ihre Maschinen bereitstellen! Beispielsweise ist es ziemlich häufig, Anwendungen auf Computern bereitzustellen, die von einer anderen Person bereitgestellt werden (z. B. eine von Ihrem Systemadministrator bereitgestellte EC2-Instanz, möglicherweise unter Verwendung von Vagrant), oder Bare-Metal-Maschinen, die Vagrant überhaupt nicht bereitstellen kann. Umgekehrt können Sie Vagrant verwenden, um Computer bereitzustellen, die nichts mit der Entwicklung Ihrer Anwendung zu tun haben - beispielsweise eine gebrauchsfertige Windows IIS-Box oder ähnliches. Oder Sie können Vagrant verwenden, um Maschinen für Projekte bereitzustellen, die Docker nicht verwenden. Möglicherweise verwenden sie eine Kombination aus Rubygems und RVM für das Abhängigkeitsmanagement und Sandboxing.
Zusammenfassend: Vagrant dient zum Verwalten von Maschinen und Docker zum Erstellen und Ausführen von Anwendungsumgebungen.
Ich gehe meiner Antwort voran, indem ich zugebe, dass ich keine Erfahrung mit Docker habe, außer als begeisterter Beobachter einer scheinbar wirklich netten Lösung, die viel Anklang findet.
Ich habe eine anständige Erfahrung mit Vagrant und kann es nur empfehlen. Es ist sicherlich eine schwerere Lösung, da es VM-basiert statt LXC-basiert ist. Ich habe jedoch festgestellt, dass ein anständiger Laptop (8 GB RAM, i5 / i7-CPU) keine Probleme hat, eine VM mit Vagrant / VirtualBox neben Entwicklungstools auszuführen.
Eines der wirklich großartigen Dinge bei Vagrant ist die Integration in Puppet / Chef / Shell-Skripte zur Automatisierung der Konfiguration. Wenn Sie eine dieser Optionen zum Konfigurieren Ihrer Produktionsumgebung verwenden, können Sie eine Entwicklungsumgebung erstellen, die nahezu identisch ist, und genau das, was Sie möchten.
Die andere großartige Sache mit Vagrant ist, dass Sie Ihre Vagrant-Datei zusammen mit Ihrem Anwendungscode versionieren können. Dies bedeutet, dass alle anderen Mitglieder Ihres Teams diese Datei freigeben können und Sie sicher sind, dass alle mit derselben Umgebungskonfiguration arbeiten.
Interessanterweise können Vagrant und Docker tatsächlich kostenlos sein. Vagrant kann erweitert werden, um verschiedene Virtualisierungsanbieter zu unterstützen, und es ist möglich, dass Docker ein solcher Anbieter ist, der in naher Zukunft Unterstützung erhält. Aktuelle Informationen zu diesem Thema finden Sie unter https://github.com/dotcloud/docker/issues/404 .
Sie ergänzen sich sehr gut.
Ich verwende seit mehreren Monaten eine Kombination aus VirtualBox, Vagrant und Docker für alle meine Projekte und habe die folgenden Vorteile stark gespürt.
In Vagrant können Sie jede Chef-Solo-Bereitstellung vollständig abschaffen. Alles, was Sie für Ihre Vagrant-Datei benötigen, ist die Vorbereitung eines Computers, auf dem ein einzelnes kleines Shell-Skript ausgeführt wird, mit dem Docker installiert wird. Dies bedeutet, dass meine Vagrantfiles für jedes Projekt fast identisch und sehr einfach sind.
Hier ist ein typisches Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "mark2"
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
[3000, 5000, 2345, 15672, 5672, 15674, 27017, 28017, 9200, 9300, 11211, 55674, 61614, 55672, 5671, 61613].each do |p|
config.vm.network :forwarded_port, guest: p, host: p
end
config.vm.network :private_network, ip: "192.168.56.20"
config.vm.synced_folder ".", "/vagrant", :type => "nfs"
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
# Bootstrap to Docker
config.vm.provision :shell, path: "script/vagrant/bootstrap", :privileged => true
# Build docker containers
config.vm.provision :shell, path: "script/vagrant/docker_build", :privileged => true
# Start containers
# config.vm.provision :shell, path: "script/vagrant/docker_start", :privileged => true
end
Die Bootstrap-Datei, die Docker installiert, sieht folgendermaßen aus
#!/usr/bin/env bash
echo 'vagrant ALL= (ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
apt-get update -y
apt-get install htop -y
apt-get install linux-image-extra-`uname -r` -y
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list
apt-get update -y
apt-get install lxc-docker -y
apt-get install curl -y
Um nun alle Dienste auszuführen, die ich zum Ausführen benötige, habe ich ein docker_start-Skript, das ungefähr so aussieht
#!/bin/bash
cd /vagrant
echo Starting required service containers
export HOST_NAME=192.168.56.20
# Start MongoDB
docker run --name=mongodb --detach=true --publish=27017:27017 --publish=28017:28017 dockerfile/mongodb
read -t5 -n1 -r -p "Waiting for mongodb to start..." key
# Start rabbitmq
docker run --name=rabbitmq --detach=true --publish=5671:5671 --publish=5672:5672 --publish=55672:55672 --publish=15672:15672 --publish=15674:15674 --publish=61613:61613 --env RABBITMQ_USER=guest --env RABBITMQ_PASS=guest rabbitmq
read -t5 -n1 -r -p "Waiting for rabbitmq to start..." key
# Start cache
docker run --name=memcached --detach=true --publish=11211:11211 ehazlett/memcached
read -t5 -n1 -r -p "Waiting for cache to start..." key
# Start elasticsearch
docker run --name=elasticsearch --detach=true --publish=9200:9200 --publish=9300:9300 dockerfile/elasticsearch
read -t5 -n1 -r -p "Waiting for elasticsearch to start..." key
echo "All services started"
In diesem Beispiel verwende ich MongoDB, Elastisearch, RabbitMQ und Memcached
Eine Nicht-Docker-Chef-Solokonfiguration wäre erheblich komplizierter.
Ein letztes großes Plus ergibt sich, wenn Sie in die Produktion einsteigen und die Entwicklungsumgebung auf eine Infrastruktur von Hosts übertragen, die alle gleich sind, da sie nur über genügend Konfiguration verfügen, um Docker auszuführen, was in der Tat sehr wenig Arbeit bedeutet.
Wenn Sie interessiert sind, habe ich einen ausführlicheren Artikel über die Entwicklungsumgebung auf meiner eigenen Website unter
Vagrant-lxc ist ein Plugin für Vagrant, mit dem Sie LXC verwenden können, um Vagrant bereitzustellen . Es verfügt nicht über alle Funktionen der Standard-Vagrant-VM (VirtualBox), sollte Ihnen jedoch mehr Flexibilität bieten als Docker-Container. Der Link enthält ein Video, das seine sehenswerten Funktionen zeigt.
Mit Vagrant können Sie jetzt Docker als Anbieter haben. http://docs.vagrantup.com/v2/docker/ . Der Docker-Anbieter kann anstelle von VirtualBox oder VMware verwendet werden.
Bitte beachten Sie, dass Sie Docker auch für die Bereitstellung mit Vagrant verwenden können. Dies unterscheidet sich stark von der Verwendung von Docker als Anbieter. http://docs.vagrantup.com/v2/provisioning/docker.html
Dies bedeutet, dass Sie Chef oder Puppet durch Docker ersetzen können . Sie können Kombinationen wie Docker als Provider (VM) mit Chef als Provisioner verwenden. Oder Sie können VirtualBox als Provider und Docker als Provisioner verwenden.
Die Verwendung von beiden ist ein wichtiger Bestandteil der Prüfung der Anwendungsbereitstellung. Ich fange gerade erst an, mich mit Docker zu beschäftigen und denke sehr intensiv über ein Anwendungsteam nach, das eine schreckliche Komplexität beim Erstellen und Bereitstellen seiner Software aufweist. Stellen Sie sich eine klassische Phoenix Project / Continuous Delivery-Situation vor.
Das Denken geht ungefähr so:
Dies scheint die logische Erweiterung von Mitchells Aussage zu sein, dass Vagrant für die Entwicklung in Kombination mit Farley / Humbles-Denken in Continuous Delivery bestimmt ist. Wenn ich als Entwickler die Rückkopplungsschleife für Integrationstests und Anwendungsbereitstellung verkleinern kann, werden eine höhere Qualität und bessere Arbeitsumgebungen folgen.
Die Tatsache, dass ich als Entwickler ständig und konsequent Container an die VM liefere und die Anwendung ganzheitlicher teste, bedeutet, dass Produktionsversionen weiter vereinfacht werden.
Ich sehe Vagrant als eine Möglichkeit, einige der großartigen Konsequenzen zu nutzen, die Docker für die App-Bereitstellung haben wird.
Auf jeden Fall Docker für den Sieg!
Wie Sie vielleicht wissen, ist Vagrant für die Verwaltung virtueller Maschinen vorgesehen, während Docker für die Verwaltung von Software-Containern vorgesehen ist. Wenn Sie den Unterschied nicht kennen, gilt Folgendes: Ein Software-Container kann denselben Computer und Kernel mit anderen Software-Containern gemeinsam nutzen. Mit Containern sparen Sie Geld, da Sie keine Ressourcen auf mehreren Betriebssystemen (Kerneln) verschwenden. Sie können mehr Software pro Server packen und dabei ein gutes Maß an Isolation bewahren.
Natürlich ist es eine neue Disziplin, sich um ihre eigenen Probleme und Herausforderungen zu kümmern.
Entscheiden Sie sich für Docker Swarm, wenn Ihre Anforderungen das Ressourcenlimit für einzelne Computer überschreiten.
Im aktuellen Oracle Java-Magazin gibt es einen wirklich informativen Artikel über die Verwendung von Docker in Kombination mit Vagrant (und Puppet):
Fazit
Die leichten Container von Docker sind im Vergleich zu klassischen VMs schneller und bei Entwicklern sowie im Rahmen von CD- und DevOps-Initiativen beliebt. Wenn Ihr Zweck die Isolation ist, ist Docker eine ausgezeichnete Wahl. Vagrant ist ein VM-Manager, mit dem Sie Konfigurationen einzelner VMs skripten und die Bereitstellung durchführen können. Es ist jedoch immer noch eine VM, die von VirtualBox (oder einem anderen VM-Manager) abhängig ist und einen relativ hohen Overhead aufweist. Es erfordert eine Festplatte im Leerlauf, die sehr groß sein kann, viel RAM benötigt und die Leistung möglicherweise nicht optimal ist. Docker verwendet Kernel-Gruppen und Namespace-Isolation über LXC. Dies bedeutet, dass Sie denselben Kernel wie den Host und dasselbe Ile-System verwenden. Vagrant ist in Bezug auf die Abstraktion eine Stufe über Docker, daher sind sie nicht wirklich vergleichbar. Konfigurationsmanagement-Tools wie Puppet werden häufig zur Bereitstellung von Zielumgebungen verwendet. Die Wiederverwendung vorhandener Puppet-basierter Lösungen ist mit Docker einfach. Sie können Ihre Lösung auch in Scheiben schneiden, sodass die Infrastruktur mit Puppet bereitgestellt wird. Die Middleware, die Geschäftsanwendung selbst oder beide werden mit Docker bereitgestellt. und Docker wird von Vagrant eingewickelt. Mit dieser Reihe von Tools können Sie das tun, was für Ihr Szenario am besten ist.
Erstellen, Verwenden und Orchestrieren von Docker-Containern in DevOps http://www.javamagazine.mozaicreader.com/JulyAug2015#&pageSet=34&page=0