Marionette und Docker können viele der gleichen Dinge tun, sie nähern sich jedoch anders an.
Puppet verwaltet Dateien + Pakete + Dienste. (Nannte das Trifecta). Docker kapselt Binärdateien und Konfigurationsdateien in einem Container.
Zur Zeit dieses Schreibens ist Docker noch instabil und sollte in der Produktion nicht verwendet werden. Viele der APIs werden wahrscheinlich geändert, bis Version 1.0 veröffentlicht wird.
Selbst wenn Docker stabil wird, ist es ein großes Unterfangen, jeden Prozess und jede Konfigurationsdatei in Docker-Container umzuwandeln.
Puppet dagegen ist ein stabiles Produkt und verfügt über ein komplettes Ökosystem an Werkzeugen (Heira, Mcollective, Facter, Razor). Diese Tools können schnell implementiert werden, ohne dass Probleme auftreten.
Ich würde dringend die folgenden Ressourcen vorschlagen.
Ein Video zum Verwalten von Anwendungsstapeln mit der Marionette
https://www.youtube.com/watch?v=KSo_mcJxFIA
Ein Podcast über die Zusammenarbeit von Docker und Marionette
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html
Ein Marionetten-Blogartikel zur Integration mit Docker
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker
Ein weiterer Blogartikel über Marionetten- und Hafenarbeiter, der gleichzeitig
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist
Ein Marionettenmodul für die Interaktion mit Docker
http://docs.docker.io/use/puppet/
Eine geringfügige Korrektur der Terminologie von Devops. Devops ist mehr eine Softwareentwicklungsmethodik, bei der Entwickler und Betrieb zusammenarbeiten, als jedes andere Werkzeug.
Aktualisieren
Derzeit verwendet meine Firma sowohl Marionette als auch Docker. Auf der Puppet Conf 2014 finden Sie eine großartige Präsentation darüber, warum Sie Puppet vs Docker verwenden sollten. Gegeben von James Turnbull, einem ehemaligen Arbeitgeber von Puppetlabs und dem Autor des Docker-Buches.
https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter
Auch ein gutes Kurzvideo-Tutorial auf Docker von sysadmincasts.com
https://sysadmincasts.com/episodes/31-introduction-to-docker
Docker Pros:
- Kann Instanz schnell hochfahren
- Leichter zu lernen als Marionette
- 0 Ausfallzeiten einfach zu erledigen
Docker Nachteile:
- Container haben ein Limit von 10 GB, wenn das Backend von devicemapper verwendet wird
- Bei kleinen Konfigurationsänderungen dauert es lange, den Container neu zu erstellen
- Kosten für die Verwendung einer Docker-Registry wie hub.docker.com, quay.io (Die selbst gehostete Docker-Registry ist extrem fehlerhaft und enthält keine GUI)
- Kein richtiges Init-System. Einige Anwendungen spielen sich nicht gut.
- Keine genaue Kontrolle über das Netzwerk
- Anwendungen, die Subshells erfordern (Blick auf Ihre RVM + Ruby) sind sehr schwierig, um richtig zu funktionieren
- Kann keine Windows-Hosts, keine SLES oder andere weniger verbreitete Betriebssysteme verwalten
- Derzeit ist die Docker-Orchestrierung noch sehr jung.
- Momentan kann Ihre /etc/resolv.conf nicht zur Buildzeit gesetzt werden
- Verschiedene Fehler, die wir mit / etc / localtime und / dev / urandom mounten müssen, um sie den localtime- und urandom-Verzeichnissen der Hosts zuzuordnen.
- Die Leistung ist nicht so schnell (trotz der Behauptung, dass Docker 99% der Geschwindigkeit von Bare Metal entsprechen sollte, ist es manchmal 30% langsamer als andere Maschinen).
- Kleine Container haben immer noch Hunderte von Megabytes an Overhead. Unsere Container sind alle mehrere Gigabyte.
Puppet Pros:
- Einfach zu skalieren
- Funktioniert mit vorhandenen Servern (Windows, Linux, Sles)
- Schnell, um kleine Änderungen vorzunehmen
- Starke Gemeinschaft von anderen Marionettenbenutzern und Modulen
- Standardisierte API für die Installation von Paketen auf allen Plattformen
Marionette Nachteile:
- Große Infrastrukturen werden sehr komplex
- Bedingte Modulabhängigkeiten erzeugen Spagetti-Code
- Mehr schweres Gewicht
Derzeit verwenden wir Marionetten, um unsere Docker-Container bereitzustellen. Die Docker-Container werden für Jenkins-Builds verwendet und werden nach jedem Build zerstört. Es funktioniert gut und gibt uns eine konsistente Umgebung. Das bedeutet, dass wir den Code nur einmal schreiben und dann sowohl Ubuntu-, Sles- und Centos-Maschinen neu erstellen müssen. Der Umbau der Container dauert etwa 15 bis 30 Minuten und ist immer noch ein manueller Vorgang. Docker ist ideal für das Aufdrehen schneller Test-VMs,
Kurz gesagt, Marionette eignet sich hervorragend für die Verwaltung Ihrer vorhandenen Infrastruktur. Docker ist gut, wenn Sie eine Greenfield-Plattform haben, die zu 100% aus Linux besteht und einen Technologie-Stack enthält, der in kleinen flüchtigen Instanzen eingeschlossen werden kann. Während sich einige Funktionen überschneiden, schließen sie sich nicht gegenseitig aus.