Der Hype um DockerWas IT-Leiter und Architekten über agiles Arbeiten,
DevOps und Containervirtualisierung wissen sollten.
Nils MagnusCeBIT Open Source Forum 2015,
Hannover, 16. März 2015
16. März 2015 Nils Magnus, inovex GmbH: Der Hype um Docker 2
Jump on the Bandwagon
Docker ist Hype! Doch worum geht’s da eigentlich genau?
In erster Linie ist Docker keine neue Virtualisierungstechnik.
So richtig wichtig ist auch nicht, wie performant Docker ist.
Standardisierung: Docker kann die Schnittstelle zwischen Development und Operations vereinfachen.
Unter Umständen Katalysator für echte DevOps-Prozesse.
Gretchenfrage: Wie einsatzfähig ist die Technik in der Produktion?
Vorwissen, Zielgruppe:
IT-Leiter, Systemarchitekten, die schon vonDocker gehört haben, aber wissen wollen, obund wo sich die Technik produktiv einsetzen lässt.
Nils Magnus, inovex GmbH: Der Hype um Docker
Ziele von IT-Entwicklung und Betrieb
Vier Erfolgsfaktoren beim Einsatz eigener Software:
Schnelligkeit
Wie schnell lassen sich neue Ideen realisieren (Time to Market)? Häufigkeit von Releases
Qualität
geringe Fehlerrate hohe Reaktionsgeschwindigkeit bei Fehlern reproduzierbar und nachvollziehbar
Produktorientierung – nicht Technikorientierung
Status auf einen Blick
Schnelle Rückmeldungen Monitoring
Nils Magnus, inovex GmbH: Der Hype um Docker
DevOps: Anspruch und Wirklichkeit
Verbesserung in kleinen Schritten und crossfunktionale Teams gibt's leider nicht kostenlos:
Neue Formen der Kommunikationnötig (Tickets, Boards),Dokumentation unerlässlich.
Agile Zusammenarbeit(zum Beispiel nach Scrum)
auf Automatisierung verlassen(CD und Docker)
Kultur (gemeinsamesCommitment notwendig)
Eine gemeinsame Scrum-Schulungreicht dabei nicht aus. Conways Law lauert!
Prozesse müssen geübt und gelebt werden!
Nils Magnus, inovex GmbH: Der Hype um Docker
Schneller mit kleinen Schritten
Nils Magnus, inovex GmbH: Der Hype um Docker
Kontinuierliche Entwicklung
Glückspiel Live-Gang: Schritt von Dev nach Prod ist in der Softwareentwicklung oft fehlerbehaftet und unvorhersagbar
Continous Delivery (CD):
Automatisierte Auslieferung der Applikation sorgt für Nachvollziehbarkeit
Häufige kleine Deployments, um Fehler einzugrenzen schnelles Feedback (für Entwicklung, Produktmanagement,
Operations)
Voraussetzungen:
Geeignete Softwarearchitektur (z. B. Microservices) Crossfunktionale Teams, die gemeinsam Probleme verstehen Development und Operations nutzen die gleichen Werkzeuge
Nils Magnus, inovex GmbH: Der Hype um Docker
Delivery-Pipeline
Auf dem Weg von der Entwicklung zur produktiven Umgebung durchläuft Software eine Kette:
Versionskontrolle Continuous Integration
Build Test Package
Infrastruktur Releases Test Monitoring
Nils Magnus, inovex GmbH: Der Hype um Docker
Docker und seine Grundlagen
Leichtgewichtige Containervirtualisierung
Es baut ursprünglich auf die Kernelfunktionen
LXC, Namespaces, Cgroups und Layered Filesystems.
Heute lassen sich fast alle Teilkomponenten beliebig austauschen.
Auch wenn sich Docker wie eine Virtualisierung anfühlt,
steht esnicht im Wettbewerb zu KVM,
Xen & Co.
Vorstellbar wie eine aufgebohrte Chroot-
Umgebung
Isolation von Ressourcen
Gemeinsame Kernelnutzung
Nils Magnus, inovex GmbH: Der Hype um Docker
Exkurs: Sicherheit im Vergleich
Physikalischer Host
Virtuelle Maschine Container
Gemeinsame Ressourcen
Teilen sich das Netz Teilen sich die Host-Hardware
Teilen sich den Kernel
Angriffsszenario Angriff per Netz auf offene Ports etc.
Angriff auf Hypervisor
Angriff per Syscall auf Kernel-Isolation (Namespaces, Cgroups, ...)Schutzmaß-
nahmenPortfilter, Firewalls, Segmentierung der Netze
Guter Hypervisor Absicherung im Containermanager, SE-Linux, Capabilitys
Aufwand der Maßnahmen
Einfach,Best Practices
Komplex,aber zentral zu managen
Vielschichtig durch relativ große Angriffsfläche
Nils Magnus, inovex GmbH: Der Hype um Docker
Begriffe im Überblick
Build nachAnleitungaus einemDockerfile
Nils Magnus, inovex GmbH: Der Hype um Docker
Demo: Image herunterladen und starten
In der Docker Registry liegen schon viele fertige Images.
Einige sind sehr einfach und minimal (Basisimages), andere enthalten schon fertig verpackte Anwendungen:
$ sudo docker search ubuntu
Herunterladen eines Images:
$ sudo docker pull ubuntu
Starten eines Containers:
$ sudo docker run -it ubuntu /bin/bash
(verlassen mit exit oder per Ctrl-p Ctrl-q)
Wie bei jeder Software steht vor dem Einsatz ein kritischer Review, was das Image eigentlich tut (Qualitätssicherung, Security)!
Nils Magnus, inovex GmbH: Der Hype um Docker
Technische Herausforderungen
Datentransfer:
in einen Container hinein- oder herausbekommen Mit der Option -v ein Verzeichnis vom Host in den
Container hineinmappen
Netzwerk:
Pragmatischer Default, aber trickreich bei Spezialfällen Mapping von Ports des Containers nach außen
Kernel- und Hardwarefunktionen:
Promiscous Mode, Hostnamen setzen, Device-Zugriff Aus Sicherheitsgründen sind per Default nicht aktiv Aktivieren ist möglich, aber erfordert tiefes Wissen
Nils Magnus, inovex GmbH: Der Hype um Docker
Dockerfiles: Bauanleitung für Images
Je nach Inhalt ist ein typisches Docker-Image etwa zwischen 200 MByte und 2 GByte groß.
Deutlich kleiner ist die Anleitung, wie Docker solche Images selbst baut.
Beispiel für einfachen Webserver auf Basis von Ubuntu:
FROM ubuntu:lastest
MAINTAINER Nils Magnus
RUN apt-get update && apt-get-upgrade -yq
RUN apt-get install apache2
CMD service apache2 start && /bin/bash
Nils Magnus, inovex GmbH: Der Hype um Docker
Standardisiert und nachvollziehbar
Kein Silo-Wissen in den konkreten Installationen (zum Beispiel Handarbeit, manuelle Anpassungen)
Stattdessen codifiziertes Wissen(Configuration as Code)
Kompletten Server
schnell nachvollziehbar von Scratch
aufsetzen (Infrastruktur, Software, Konfiguration)
Container selbst sind „Wegwerfware“
Nils Magnus, inovex GmbH: Der Hype um Docker
Pet-vs-Cattle-Pattern
Gerade, wenn es um viele Instanzen (Server, VMs, Container) geht, ist ein Umdenken im Umgang mit Anwendungen nötig:
Pet: Jeder Admin hegt und pflegtseine Server von Hand, kenntjede Besonderheit
Cattle: Der DevOp treibt eineHerde von sich gleichendem Viehüber die Prärie. Keine emotionaleBindung an ein einzelnes Tier/Server
Bei Konfigurationsupdates, Softwareupdates oder Rollbacks:
nur das Dockerfile konfiguriert den Container kein aufwändiges Configdeployment in Container evtl. nicht mal ein Konfigurationsmanagement
Nils Magnus, inovex GmbH: Der Hype um Docker
Alles in Docker?
Ergibt es Sinn, alle Aufgaben inDocker-Containern abzulegen?
Dockerisieren ist zwar eine guteÜbung, aber kein Selbstzweck.
Welchen Sinn hat Infrastrukturin Containern?
Git-Repository, DNS/DHCP, Zeitserver, …
Datenbanken in Docker sind umstritten
Hinreichend I/O zum Teilen vorhanden? Wie Backup, Datentransfer und -sharing realisieren?
Nils Magnus, inovex GmbH: Der Hype um Docker
Docker für Entwickler
Diesmal wirklich eine produktionsnahe Umgebung, die beim Entwickler auf dem Notebook laufen kann.
Ressourcensparende Umgebung, Nicht nur die Anwendung, sondern auch Datenbanken
und Webserver sind so abbildbar, Ablauf des Deployments wird einfacher, Entwickler können selbst Deployments anstoßen und
womögliche Probleme selbst erkennen.
Nils Magnus, inovex GmbH: Der Hype um Docker
Microservices
Neue Sicht auf eine Anwendungsarchitektur.
Alter Wein (SOA) in neuen Schläuchen, aber immerhin sind die Schläuche neu!
Anwendungen in deutlich kleinere, autonome Subanwendungen teilen.
APIs müssen stabil bleiben. Sehr schnelles Deployment eines Service ist möglich. Das Deployment von Service A ist ohne Auswirkung
auf den Service B. Sollte zumindest so sein.
Container unterstützen dieses Pattern optimal.
Nils Magnus, inovex GmbH: Der Hype um Docker
Docker im Kontext für Services
Allein ist Docker nur ein kleiner (wenn auch wichtiger) Baustein.
Zu Debuggingzwecken ist ein Container in Sekunden mit einem frischen Sandbox-Betriebssystem bereit.
Als Ablaufumgebung im Produktivbetrieb bleiben viele weitere Fragen:
Wo sind die Dockerfiles hinterlegt? Welche Instanz aktiviert die Container, die zu einer
Anwendung gehören? Wer kümmert sich um das Datenrouting (Loadbalancer)? Wer verwaltet gemeinsame Daten in einem Cluster? Woher weiß ein Container in dieser dynamischen Umgebung,
wo er andere Dienste findet (Service Discovery)?
Nils Magnus, inovex GmbH: Der Hype um Docker
Parametrisierung und Orchestrierung● Reicht ein Dockerfile alleine aus, um einen realen Dienst vollständig zu
beschreiben?
● Kaum, denn Dockerfiles als alleinige Beschreibung eines Softwaredienstes sind natürlich idealisiert.
Parametrisierungen und Konfiguration von ...
Betriebsumgebung (Stage, Prod, …), Kontakt zu anderen Komponenten
(Datenbank-Connect, externe Dienste, …), Softwareversionen, anwendungsspezifische Konfigurationen, Applikationsdaten (Datenbanken, Dateiverzeichnisse, …) und Passwörter sowie Credentials
... sollten nicht innerhalb des Dockerfile stehen.
Nils Magnus, inovex GmbH: Der Hype um Docker
Ökosystem
Hostbetriebsystem für Docker:
CoreOS
Verteilte CMDB:
etcd
Service-Deployment:
Systemd Fleet Swarm
Integrierte Verwaltung:
Kubernetes, Mesos, OpenShift, Cockpit, …
Alternativen zu Docker:
LXC, Nspawnd, Rocket
u. v. a. m.!
Nils Magnus, inovex GmbH: Der Hype um Docker
Docker im IT-Betrieb
Technische Reife:
Funktional (als Container) fast vollständig Stabilität und Sicherheit: gut, aber im Fluss Benutzbarkeit: sehr gut
Sehr dynamisches Ökosystem:
Unübersichtlich: für viele Aufgaben alternative Tools Unklar, welche Ansätze sich am Markt durchsetzen, welche
wieder verschwinden oder sich mergen Aufwände für Schulung und Einführung entstehen
Wie produktionsreif ist Docker also?
Nils Magnus, inovex GmbH: Der Hype um Docker
Noch bestehender Nachholbedarf
Der Einsatzzweck bestimmt die Tauglichkeit:
✗ Abtrennung hochkritischer Daten:Konzeptionell problematisch wegen geteiltem Kernel
✗ Viele gleiche Nodes auf einem Docker-Host (HA):Ergibt nur begrenzt Sinn, weil identische Hardware
✗ Drop-in-Replacement bestehender Anwendungen
Komplexe Applikationen, mehrere Schichten/Netze:im Prinzip ok, wenn Orchestrierung etc. gelöst ist
Nils Magnus, inovex GmbH: Der Hype um Docker
Einsatzempfehlungen
Heute schon einsatzfähig in diesen Szenarien:
✔ Testumgebung für Proof-of-Concept-Tests: problemlose und realitätsnahe Spielwiese
✔ Austauschformat für die Applikationsentwicklung: mit sanftem Druck zum Continuous Deployment!
✔ Moderne Anwendungen, die neu konzipiert werden
✔ Geplante, flexible Microservice-Strukturen
Vielen Dank für Ihre Aufmerksamkeit!
Kontakt
Nils MagnusSenior Systems Engineer
inovex GmbHOffice MünchenValentin-Linhof Str. 281829 München
Mobil: +49-173-3181-057E-Mail: [email protected]
Sprechen Sie uns an aufunsere Referenzprojekte!
Nils Magnus, inovex GmbH: Der Hype um Docker
Medienreferenzen „Container 01 KMJ“ von KMJ aus der deutschsprachigen Wikipedia.
Lizenziert unter CC BY-SA 3.0 über Wikimedia Commons inovex GmbH „Kuhkuscheln“ am Bergwaldhof „Wolpertinger“ von Rainer Zenz - Rainer Zenz. Lizenziert unter CC
BY-SA 3.0 über Wikimedia Commons OpenClips, Pixabay Vielen Dank an Alexander Pacnik für seine Anregungen zum Thema
Continuous Delivery Vielen Dank an Max Wippert für Anmerkungen zum Thema DevOps Vielen Dank an Tobias Bayer für redaktionelle Hinweise Vielen Dank an Lukas Funk für gestalterische Hinweise