Docker Captains kommentieren

Mythos Docker: Zwischen Hype und Revolution der IT
Keine Kommentare

Wir haben 12 Docker Captains gefragt, ihre Erfahrungen über Docker mit uns zu teilen. Wo liegt das disruptive Element von Docker? Wie profitieren sie am meisten von Container-Technologien? Mit welchen Tipps können auch Sie Ihre Arbeit mit Docker effizienter gestalten? Den Anfang macht Nicolas De Loof, Docker-Enthusiast bei CloudBees.

Hallo Nicolas! Docker revolutioniert die IT – diesen Satz hört man ja immer wieder. Doch was ist da wirklich dran? Ist Docker für dich mehr Hype oder tatsächlich eine Revolution?

Nicolas De Loof: Nun, 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 tatsächlich 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.

 

Nicolas De Loof ist Docker-Enthusiast bei CloudBees. Im YouTube Channel „Quoi d’neuf Docker“ teilt er sein Wissen und seine Begeisterung über Docker und Container-Technologien mit anderen. @ndeloof

Viele beschreiben da so einen Aha-Effekt beim ersten Einsatz von Docker, da ihnen schlagartig die neuen Möglichkeiten klar werden. Wie verlief dein erster Kontakt mit Docker: War es Liebe auf den ersten Blick?

Der größte Wert von Docker liegt im Image-Format und in den Mechanismen, Images zu verteilen.

Nicolas De Loof: Mein Unternehmen CloudBees war damals ein Konkurrent von dotCloud. Mein erster Kontakt mit Docker-Container verlief größtenteils negativ, da Docker recht unflexibel war im Vergleich zu dem, was wir zu diesem Zeitpunkt lieferten. Später habe ich aber die Vorteile unveränderlicher Infrastrukturen erkannt und gesehen, wie Docker bei der Implementierung hilft. Mittlerweile haben wir unser PaaS-Angebot eingestellt, und ich konnte mehr experimentieren, was dazu geführt hat, dass ich Docker definitiv in meine Entwickler-Toolbox aufgenommen habe.

Wie setzt du heute Docker ein?

Nicolas De Loof: Für meine persönlichen Projekte nutze ich Docker für zahlreiche Tests, bei denen ich sicherstelle, eine reproduzierbare Umgebung aufzusetzen, die ich mit anderen teilen kann. Außerdem verhindere ich so, dass die Umgebung irgendwelche Auswirkungen auf meine Workstation hat. Mein Unternehmen bietet eine Docker-basierte CI/CD-Lösung an “CloudBees Jenkins Enterprise”- und als Docker-Experte kümmere ich mich darum, dass hier die besten Docker Features mit einfließen.

Wo liegen aus deiner Sicht die wichtigsten Unterschiede zwischen Docker und klassischen Virtualisierungslösungen? 

Nicolas De Loof: 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 moderne Architektur-Ansätze möglich werden: unveränderliche Infrastrukturen, Microservices, verteilte Software.

DevOps Docker Camp

Sie lernen die Konzepte von Docker und bauen Schritt für Schritt eine eigene Infrastruktur für und mit Docker auf.

Wie siehst du die aktuellen Entwicklungen im Container-Ökosystem? Docker hat hier ja die Docker-Runtime „containerd“ an die Open Container Initiative übergeben. Eine gute Entscheidung?

Nicolas De Loof: Dockers technischer Wert liegt nicht in der Container-Laufzeit. Die könnte man ohne größeren Aufwand nachbauen. Damit das Ökosystem aber florieren kann, müssen Vertrauen geschaffen und eine gewisse Interoperabilität gewährleistet werden. Ein offener Standard sowie eine Referenzimplementierung sind also unbedingt notwendig. Als Java-Entwickler bin ich mit einem solchen Ansatz vertraut: Man hat ein dokumentiertes Standard API und eine Referenz-Implementierung, die gleichzeitig alternative Implementierungen und Innovationen zulässt. Docker tut nun dasselbe mit einem klaren Vorgehensmodell: Man beweist, dass gewisse Dinge funktionieren, extrahiert eine Open-Source-Komponente und stellt schließlich sicher, dass diese Komponente Teil des standardisierten Container-Ökosystems von OCI wird.

Welche Herausforderungen gibt es noch bei der Arbeit mit Docker?

Datenpersistenz ist wohl der am meisten missverstandene Punkt unter Docker-Nutzern.

Nicolas De Loof: Die Datenpersistenz ist wohl der am meisten missverstandene Punkt unter Docker-Nutzern. Einige sagen, dass man eine Datenbank nicht in Docker laufen lassen kann – vielleicht haben sie aber auch nur das „‑Volumes“-Kapitel in der Dokumentation übersehen? Volumes führen Berechtigungsregeln ein, wenn man versucht, von mehreren Containern aus auf sie zuzugreifen. Die Dinge werden nur schlimmer, wenn Leute versuchen, Volumes manuell als „bind mount“zu verwalten, ohne den Docker-Daemon sein Voodoo-Setup machen zu lassen. Dies ist bei weitem kein triviales Problem. Aber ich erwarte einige Upstream-Änderungen im Linux-Kernel bzw. in Dateisystem-Treibern, um dies in Zukunft einfacher zu machen. 

Welche neuen Features wünscht du dir in Docker?

Nicolas De Loof: Zunächst einmal würde ich gerne Unterstützung für unprivilegierte verschachtelte Container bekommen – also quasi „Docker in Docker.“ DinD erfordert noch einige zusätzliche Privilegien, was problematisch in Bezug auf die Security ist. Auf der anderen Seite muss ich für meinen CI/CD-Anwendungsfall dafür sorgen, dass Benutzer Docker-Container in einer dockerisierten Build-Umgebung laufen lassen können. Das ist technisch machbar, da dies von LXD auf der Basis eines aktuellen Linux-Kernel unterstützt wird.

Ein weiteres Feature, das ich gerne sehen würde, ist die Implementierung eines Benutzer-Namensraumes auf Containerebene, so dass ich die Zuordnung der Benutzer-IDs auf Container-Basis konfigurieren kann. Mit Dateisystemunterstützung würde es dann nur noch trivial sein, Container zusammenzustellen und dabei volle Unterstützung für gemeinsam genutzte Volumes zu erhalten. Dies ist jedoch ein langfristig angelegtes Feature, da dafür noch einige Korrekturen im Linux-Kernel-Dateisystem erforderlich sind (work in progress).

Kannst du den Lesern zu Abschluss noch einen Docker-Tipp mitgeben?

Nicolas De Loof: Wenn man sich unveränderliche (immutable) Infrastrukturen anschaut, so gibt es viele Middleware-Systeme, die das Filesystem als Cache benutzen, was man vielleicht vermeiden möchte. Ich beschränke das gerne, indem ich sie als Read-only Container (docker run –read-only) laufen lasse, um genau zu wissen, wo sie auf das Filesystem zugreifen müssen. Dann lege ich einen Ordner für das Persistent Data Directory an und ein tmpfs für alles andere, typischerweise Caches oder Logfiles.

Vielen Dank für dieses Interview!

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -