Dossier Docker

Docker vs. Virtuelle Maschine: Wo liegen die Unterschiede?

Hartmut Schlosser
© Shutterstock / Julia Waller

© Shutterstock / Julia Waller

Docker revolutioniert die IT – diesen Satz haben Sie sicher schon selbst des Öfteren gehört. Doch was ist wirklich dran am Hype um Docker? 12 Docker Captains geben Antworten.

Docker vs. VM – wer gewinnt?

Wir haben 12 Docker Captains gebeten, uns ihre persönlichen Tipps zu Docker zu verraten. Im ersten Teil der Reihe haben wir erfahren, welchen Nutzen die Experten aus dem Einsatz von Containern ziehen. Außerdem haben sie gezeigt, wie man am meisten von Containern profitieren kann.

Im zweiten Teil wollen wir uns nun das disruptive Element von Docker vornehmen. Kann man wirklich zurecht von einer Revolution der IT durch Container sprechen? Was ist Hype, was echter Mehrwert? Und wo liegen die Unterschiede zwischen Docker und einer virtuellen Maschine?

Docker Tipp #1

Nicolas De Loof ist Docker-Enthusiast bei CloudBees. @ndeloof

Docker – Hype oder Revolution?

Nicolas De Loof: Container sind an sich keine neue Sache. Google verwendet sie seit einer Dekade, und viele Ops-Team hatten LXC noch viel früher im Einsatz. Was Docker aber disruptiv macht, ist, dass es eine benutzerorientierte High-Level-Abstraktion für das „Verteilen und Betreiben von Dingen“ definiert. Der größte Wert von Docker liegt im Image-Format und in den Mechanismen, Images zu verteilen. Die Runtime ist auch großartig, da sie vernünftige Standardeinstellungen bietet, mit denen viele Dinge einfach Out-of-the-Box funktionieren. Erfahrene Benutzer, die Container etwa in der Produktion einsetzen möchten, können die Runtime zudem feinkörnig anpassen und kontrollieren.

Docker vs VM – wo liegt der Unterschied?

Docker und virtuelle Maschinen unterscheiden sich in vielerlei technischer Hinsicht – aber darum geht es nicht. Man könnte Docker auch mit virtuellen Maschinen implementieren (eigentlich machen das Intels clearcontainer und hyper.sh). Aber für die meisten Benutzer werden VMs als Maschinen erstellt und verwaltet, die nie ersetzt werden. Man muss sie vielleicht aktualisieren, reparieren, etc., doch bleibt eine VM immer ein vollständiges System. Wenn etwas schief läuft, ist es schwer zu sagen, wo der Fehler liegt.

Container und Docker sind keine Alternativen für virtuelle Maschinen, sondern komplementäre Technologien für unterschiedliche Zwecke. VMs ermöglichen die Verwaltung von Hosts über APIs und bieten Infrastrukturelastizität. Docker erlaubt es hingegen, Software als kleine Lego-Blöcke zusammenzusetzen, so dass sie moderne Architektur-Ansätze umsetzen: unveränderliche Infrastrukturen, Microservices, verteilte Software.
x

Docker Tipp #2

Nick Janetakis ist Docker Trainer und Urheber von www.diveintodocker.com. @nickjanetakis

Docker – Hype oder Revolution?

Nick Janetakis: Ich lasse mich normalerweise nicht von Hypes beeinflussen, da ich mich am Ende des Tages nur für Ergebnisse interessiere. Eine Frage, die ich mir immer wieder stelle ist: „Kann diese neue Technologie mein Leben als Entwickler oder Systemadministrator wirklich verbessern? Wenn ja, dann gebe ich jeder neuen Technologie eine faire Chance.

Und ich denke, Docker wird seinem Hype gerecht. Ich würde es nicht benutzen, wenn ich nicht begeistert wäre von dem, was es mich tun lässt. Den größten Vorteil von Docker sehe ich in den Möglichkeiten, die es Entwicklern eröffnet. Wenn du dir keine Gedanken darüber machen musst, wie du etwas installieren sollst, öffnet sich die Tür, die Technologie auszuwählen, die am besten zu dir passt.

Aber nicht nur das, man sieht die Gewinne durch den Einsatz von Docker unmittelbar, was wirklich wichtig ist. Zum Beispiel musst du dich nicht damit herumschlagen, deine Projekte mit verschiedenen Versionsverwaltungstools für Programmiersprachen zu isolieren. Du kannst die Anwendungen einfach mit Docker isolieren.

Docker vs VM – wo liegt der Unterschied?

Eine Docker-basierte Anwendung ist nur ein Prozess, der auf deinem System ausgeführt wird. Es ist kein Hypervisor erforderlich (wie z. B. VMWare oder VirtualBox). Das bedeutet, dass man kein Gastbetriebssystem mit sich herumschleppen muss.

Ich denke, es gibt heutzutage gute Gründe, Virtual Machines zu verwenden, aber sie lösen ein anderes Problem als Docker. Mit Docker können einzelne Anwendungen isoliert werden. Mit Virtual Machines lassen sich ganze Systeme isolieren. VMs und Container operieren auf verschiedenen Ebenen der Abstraktion.
x

Docker Tipp #3

Ajeet Singh Raina ist Senior Systems Development Engineer bei DellEMC Bengaluru, Karnataka, Indien. @ajeetraina

Docker – Hype oder Revolution?

Ajeet Singh Raina: Wie oft hast du schon einen CPU/Memory/Ressourcen-Fehler bekommen, während du Temple Run oder irgendeine andere Anwendung auf deinem Mobile Device installiert hast? Ich jedenfalls habe noch nie jemanden gehört, der sich darüber beklagt hätte.

Ich denke, das Gleiche passiert gerade in der Serverwelt. Unabhängig davon, welche Sprache du für die Entwicklung deiner Anwendung auf welcher Plattform auch immer verwendest – alles, was du tust, ist die Anwendung zu paketieren und sie nahtlos auf verschiedenen Umgebungen auszuführen. Docker hat in der Tat die Art und Weise revolutioniert, wie wir unsere Anwendungen ausliefern, bauen und betreiben – von kleinen IoT-Geräten wie Raspberry Pi, Laptops, Workstations, Mainframes bis hin zu diversifizierten Cloud-Plattformen.

Ob Big-Data-Analyse, Anwendungs-Frameworks, Applikationsinfrastruktur, Anwendungsdienste, Datenbanken, Messaging-Dienste, Monitoring, Betriebssysteme, Programmiersprachen, Deep Learning, Security, Storage, DevOps Tools, etc. Überall stößt man auf ein riesiges Interesse an Implementierungen mit Docker-Containern.

Docker vs VM – wo liegt der Unterschied?

Docker ist eine Container-basierte Technologie, und Container stellen lediglich User Space des Betriebssystems dar. Unter der Haube sind Container nur Prozesse, die isoliert vom Rest des Systems sind. Sie laufen von einem bestimmten Image aus, das alle nötigen Dateien enthält, um die Prozesse zu unterstützen.

Docker zielt auf den Betrieb von Anwendungen ab, wobei sich die in Docker laufenden Container den Host OS-Kernel teilen. Im Gegensatz dazu basieren Virtuelle Maschinen nicht auf Containern, sondern sind aus dem User Space plus Kernel Space eines Betriebssystems aufgebaut. Unter VMs wird die Server Hardware virtualisiert. Jede VM verfügt über Betriebssystem und Anwendungen und teilt sich die Hardware-Ressourcen vom Host.

Sowohl VMs als auch Docker hat Vor-und Nachteile. In einer VM-Umgebung benötigt jeder Workload ein komplettes OS – in einer Container-Umgebung laufen mehrere Workloads in einem OS. Je größer der OS Footprint ist, desto mehr lohnen sich Container-Umgebungen. Darüber hinaus bieten Container weitere Vorteile wie reduzierte IT Management Ressourcen, kleinere Snapshots, ein schnelleres Starten von Anwendungen, reduzierte und vereinfachte Scherheits-Updates, weniger Code, um Worksloads zu transferieren, zu migrieren und zu laden.

x

Docker Tipp #4

John Zaccone arbeitet als Cloud Engineer und Developer Advocate bei IBM. @JohnZaccone

Docker – Hype oder Revolution?

John Zaccone: Ich denke, Docker und Container lösen viele Probleme, die wir derzeit haben, wie z.B. das leidige „Works on my machine“ und die Möglichkeit, Anwendungen in vielen verschiedenen Größenordnungen automatisieren zu können. Die zentrale Sache, die all das möglich macht, sind Container. Das Konzept der Container existiert zwar schon eine Weile. Was jetzt dazukam, war lediglich die Möglichkeit, Container mit ein paar wirklich netten Werkzeugen nutzbar zu machen. Docker hat genau das geliefert und dabei wirklich gute Arbeit geleistet, um eine gute Benutzererfahrung für Entwickler bereit zu stellen.

Docker vs VM – wo liegt der Unterschied?

Container ermöglichen es, Anwendungsabhängigkeiten zu kapseln und diese bei der Anwendungsentwicklung mit einzubeziehen. Fragt euch einmal selbst: Testet Ihr nur euren Code? Oder testet Ihr eure gesamte Anwendung (Code + alles, wovon eure Anwendung abhängt: Bibliotheken, Laufzeitversionen, etc)? Wir richten all diese Best Practices für Tests, automatisierte Validierung usw. ein. Es wäre schlicht albern, wenn wir ausgerechnet die Anwendungsabhängigkeiten hierbei nicht mit einbeziehen würden.
x

Docker Tipp #5

Gianluca Arbezzano ist Site Reliability Engineer bei InfluxData Italy. @gianarb

Docker – Hype oder Revolution?

Gianluca Arbezzano: Ich denke, man kann von einer Revolution sprechen, und zwar aus zwei Gründen. cgroup und Container sind zwei hervorragende Technologien bzw. Konzepte, die Entwickler sowie Systemadministratoren wirklich bei der Arbeit unterstützen. Der zweite Grund ist die Architektur selbst. Docker und darauf basierende Projekte wie Notar, containerd oder runc sind großartige Beispiele für guten Code. Dockerfile zur Beschreibung von Containern ist eine sehr gute und saubere Implementierung. Davor hatten wir mit komplexen und langen Konfigurationsdateien zu tun, um Infrastruktur als Code zu beschreiben. Die Mischung dieser beiden Faktoren hat das geschaffen, was wir heute als Docker-Revolution erleben.

Docker vs VM – wo liegt der Unterschied?

Viele Leute kümmern sich momentan nicht wirklich um Isolation. Ein Container, der als privilegiert innerhalb einer virtuellen Maschine ohne Ressourcenbeschränkungen, Sicherheitsprofile und so weiter läuft, ist eigentlich nichst weiter als ein Smart Tarball. Aber wenn du alle Möglichkeiten von Containern nutzt, erreichst du eine gute Isolierung und erhältst obendrein eine leichtgewichtige und einfache Umgebung, um Anwendungen auszuführen, zu verteilen und zu verwalten. Das Starten einer virtuellen Maschine ist zeitlich teurer als das Starten eines Containers. Gleiches gilt für den Aufbau und die Verteilung. Dockerfiles sind zudem wesentlich einfacher als andere Provisionierungslösungen auf der Basis von Virtual Machines.

Docker Tipp #6

Adrian Mouat ist Chief Scientist beim Unternehmen Container Solutions. @adrianmouat

Docker – Hype oder Revolution?

Adrian Mouat: Man sollte eher sagen: Container und Microservices revolutionieren die IT, das ist wahrscheinlich zutreffender. Im einfachsten Fall ist ein Docker-Container nur eine Verpackung. Die Verpackung ist es aber, die die Lücke zwischen Entwicklung und Produktion schließt und die Geschwindigkeit und Zuverlässigkeit erhöht, mit der wir Software bauen können. Container sind ein ideales Auslieferungswerkzeug für Microservices – eine Software-Architektur, die beim Aufbau großer, verteilter Systeme, die skalierbar und belastbar sein müssen, zunehmend an Bedeutung gewinnt.

Docker vs VM – wo liegt der Unterschied?

Docker und VMs sind insofern ähnlich, als sie beide isolierte Umgebungen bereitstellen – sie können sowohl zum Verpacken als auch zum Verteilen von Software verwendet werden. Allerdings sind Container in der Regel viel kleiner und schneller, was sie für agile Entwicklungszyklen und Microservices besser geeignet macht. Der Kompromiss besteht darin, dass Container keine echte Virtualisierung leisten; man kann  beispielsweise keinen Windows-Container auf einem Linux-Host betreiben. Es lohnt sich auch darauf hinzuweisen, dass einige Unternehmen versuchen, Tooling um abgespeckte VMs herum zu erstellen, um das Beste aus beiden Welten herauszuholen, z. B. hyper.sh, Intel Clear Containers und vSphere Integrated Container.
x

DevOps Docker Camp 2017

Das neue DevOps Docker Camp – mit Erkan Yanar

Lernen Sie die Konzepte von Docker und die darauf aufbauende Infrastrukturen umfassend kennen. Bauen Sie Schritt für Schritt eine eigene Infrastruktur für und mit Docker auf!

Docker Tipp #7

Vincent De Smet arbeitet als DevOps Engineer bei Honestbee, Singapore. @vincentdesmet

Docker – Hype oder Revolution?

Vincent De Smet:  Zuerst revolutionierte die Maschinenvirtualisierung die IT: Sie verbesserte die Stabilität, Verwaltbarkeit und brachte deutliche Kosteneinsparungen. Bereits seit den frühen 70er Jahren war die gemeinsame Nutzung von Ressourcen ein grundlegendes Modell der IT, und viele der Time-Sharing-Konzepte wurden seit der Verbreitung des Internets als Cloud Computing wiederbelebt. Als ich die Kernkonzepte gesehen habe, die Docker auf der Basis der LXC-Technologie eingeführt hat, deren Wurzeln auf das Jahr 1979 zurückgehen (Chroots – Wortspiel beabsichtigt), war ich mir sicher, dass dies eine wichtige Technologie für die Art und Weise sein würde, wie wir in Zukunft Anwendungen entwickeln und bereitstellen werden. Die Kernbegriffe, die Docker eingeführt hat, waren:

  1. Unveränderliche Container Images, die reproduzierbar nach einem offenen Standard über mehrere Plattformen hinweg aufgebaut werden können.
  2. Zentrale Registries, um diese Images weiterzugeben, mit starken Governance-Richtlinien und zentralen Schnittstellen.
  3.  Eine Container Runtime Engine mit klar definierten Verantwortlichkeiten für das Einrichten und Starten von Containern.

Docker stellte 2013 die erste Implementierung dieser Konzepte Open Source zur Verfügung und war in der Lage, eine sehr große Community von Mitwirkenden (Red Hat, Microsoft,…) zu gewinnen. Damit wurde sichergestellt, dass sich die Industrie um diese gemeinsame Definition der Komponenten versammelte, was Voraussetzung dafür ist, dass sie auch zukünftig eine Rolle spielen werden.

Docker vs VM – wo liegt der Unterschied?

Es gibt viele Analogien – beispielsweise Wohnungen mit gemeinsamen Sanitäranlagen im Gegensatz zu alleinstehenden Häusern. Ich denke, dass es bereits eine Menge Material zu diesem Thema gibt, also empfehle ich diesen Artikel von Mike Coleman – https://blog.docker.com/2016/05/vm-or-containers/
x

Docker Tipp #8

Chanwit Kaewkasi ist Docker Swarm Maintainer und hat Swarm auf Windows portiert.@chanwit

Docker – Hype oder Revolution?

Chanwit Kaewkasi: Meiner Meinung nach ist es wirklich eine Revolution. In der Vergangenheit war es sehr aufwändig, eine Gruppe von Web-Servern zu betreiben. Mit Docker können wir das Gleiche in ein paar Minuten erledigen.

Docker vs VM – wo liegt der Unterschied?

Docker nutzt die Virtualisierung auf Betriebssystemebene, z. B. Linux-Namensräume und Kontrollgruppen. Dockers Overhead ist im Vergleich zu einer vollständigen Virtualisierungstechnik, beispielsweise ein von virtuellen Maschinen verwendeter Hypervisor, sehr gering.

Docker Tipp #9

Kendrick Coleman ist Developer Advocate for {code} by Dell EMC. @kendrickcoleman

Docker – Hype oder Revolution?

Kendrick Coleman: Docker revolutioniert die IT auf jeden Fall. Aber im Moment ist es nicht Docker allein. Docker ist die Schlüsseltechnologie, die viele andere Technologien ermöglicht hat. Beispielsweise sind Mesos und Kubernetes auf der Bühne erschienen, die Docker unter der Haube verwenden. Diese neuen Tools zusammen ergeben ein mächtiges Werkzeug, um die Mauer zwischen Devs und Ops zu durchbrechen. Ein Verpackungstool ermöglicht es uns, unsere Anwendungen extrem portabel zu machen und in jeder beliebigen Umgebung zu platzieren, egal ob in der Cloud, auf dem Desktop Computer oder zwischen beliebigen Orchestratoren. Die Tatsache, dass es sich hierbei um Open-Source-Werkzeuge handelt, bedeutet aber nicht, dass alles kostenlos ist. Nichts ist je umsonst. Open Source bedeutet, dass man  Geld auf andere Arten ausgeben muss, indem man beispielsweise seinen Mitarbeitern ermöglicht, etwas Neues zu lernen. Oder man investiert in bezahlten Support, Beratung und Outsourcing.

Docker vs VM – wo liegt der Unterschied?

Wir haben alle die einschlägigen Vergleichstabellen zwischen Containern und VMs gesehen. Für mich ist die Geschwindigkeit und Portabilität ausschlaggebend. Nachdem wir mittlerweile Umgebungen mit Hunderten von VMs bewältigen können, werden Container den Fußabdruck noch weiter reduzieren.
x
x

Docker Tipp #10

Lorenzo Fontana ist DevOps-Experte bei Kiratech. @fntlnz

Docker – Hype oder Revolution?

Lorenzo Fontana: Ja, Docker revolutioniert die IT. Das Wichtigste, was man über das Docker-Projekt (bzw. jetzt das Moby-Projekt) und Docker Inc. wissen sollte, ist, dass sie gut darin sind, schwierige Dinge einfacher zu machen. Und das gilt nicht nur für Docker.

Docker vs VM – wo liegt der Unterschied?

Darüber habe ich einen Blog-Beitrag geschrieben: https://fntlnz.wtf/post/why-containers/. Aber es lohnt sich nicht unbedingt, die beiden Technologien zu vergleichen.

Wenn du einen Einzeiler bevorzugst:

„Container sind Prozesse, VMs sind Server“
x
x

Docker Tipp #11

Brian Christner ist Cloud Advocate und Cloud-Architekt für Swisscom. @idomyowntricks

Docker – Hype oder Revolution?

Brian Christner: Ich glaube wirklich, dass Docker ein neues Toolset geschaffen hat, das nun zum Standard für DevOps geworden ist.

Docker vs VM – wo liegt der Unterschied?

Diese Frage stellt sich immer wieder. Ich möchte darauf hinweisen, dass VMs für Anwendungen entwickelt wurden, die in der Regel statischer sind und sich nicht sehr oft ändern. Dagegen sind Container flexibler und ermöglichen eine einfache und häufige Aktualisierung ihrer Container. Die Grenze zwischen VMs und Containern ist der Anwendungsfall. Aber im selben Atemzug erwähne ich auch, dass wir alle unsere Apps in Containern und VMs laufen lassen, so dass sie sich tatsächlich sehr gut ergänzen.

Docker Tipp #12

Antonis Kalipetis ist CTO bei SourceLair, eine Docker-basierte Online-IDE. @akalipetis

Docker – Hype oder Revolution?

Antonis Kalipetis: Ich würde sagen, dass Docker eine Revolution hervorgebracht hat, die in der Praxis schon großflächig angelegt war. Container gab es schon lange vor Docker. Aber Docker hat es geschafft, die Technologie auf eine einfache und unkomplizierte Art und Weise in die Community zu bringen, indem es die Technologie wirklich produktiv nutzbar gemacht hat.

Docker vs VM – wo liegt der Unterschied?

Docker ist heutzutage eher eine Plattform. Es ist viel mehr als das, was es früher war, als ich Docker zum ersten Mal nutzte. Daher sollte die klassische Debatte “VM vs Docker” meiner Meinung nach in “VM vs Container (wie runC)” umformuliert werden.

Aber zurück zur Frage: Eine VM ist das, was sie eigentlich sagt – eine virtualisierte Hardware-Maschine. Ein Container hingegen ist nur ein Prozess, den wir mit Hilfe von Kernel-Features isolieren und die ihm zur Verfügung stehenden Ressourcen einschränken können. Sie dienen verschiedenen Zwecken. Eine Lösung für alles sind weder Container noch VMs.

 

Im nächsten Teil der Reihe geht es um die aktuellen Herausforderungen im Bereich der Container-Technologien.

Bleiben Sie dran!

Verwandte Themen:

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, JavaFX, Eclipse und DevOps. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.