Docker und Kubernetes Container Seminar 2017 in Frankfurt

Man muss in den letzten fünf Jahren IT-Nachrichten vollständig ignoriert haben, um noch nie von Docker gehört zu haben. Docker – so wird eine trendige Linux-basierte Containertechnologie zur leichtgewichtigen Anwendungsvirtualisierung bezeichnet. Ihre Wurzeln gehen auf Ideen von Jails (FreeBSD) und Zones (Solaris/Illumos) zurück. In Zeiten rascher Entwicklungszyklen und noch schnelleren Anforderungsänderungen, werden allgegenwärtige Server-Virtualisierung und Service-Konfigurationsmanagement mittlerweile oft als schwergewichtig und träge empfunden. Hier verspricht Docker, als DevOps-Werkzeug, ein guter Gehilfe zu sein.

docker Logo

Tag 1 - „Docker“ das große Mysterium und was sich dahinter verbirgt

Aber was genau ist Docker? Was kann man damit machen und was besser nicht? Wie sind die Begriffe Image, Container, Pod, Compose, Swarm oder gar Kubernetes einzuordnen? Sind all diese Themen interesant für die dkd? Diese und viele weitere Fragen stellte sich unsere kleine Gruppe aus zwei Systemadministratoren und drei Softwareentwicklern Ende Februar, in der Vorbereitung für das Container Seminar 2017 in Frankfurt.

So ein bisschen Docker hatte jeder schon einmal lokal auf seinem Rechner probiert, wie sich in der zwölf Teilnehmer starken Runde schnell herausstellte. Andere Unternehmen stellen sich eben die gleichen Fragen wie wir. Dies machte es den Kursleitern leichter, sich auf uns Neulinge einzustellen. Jeder wartete gespannt vor seinem Notebook auf den Startschuss: Hier waren also technikaffine Menschen unter sich.

Los geht es: Wir lassen Worten Taten folgen

Nach einem kurzen Einstieg und einem Überblick über die kommenden Themen, ging es dann auch gleich am eigenen Notebook praktisch los. Eine simple Webanwendung war in sekundenschnelle gestartet. Und auch ebenso schnell wieder gestoppt: ein minimales Linux mit einem Webserver, in einem lokalen Systemprozess. Hurra, der erste Container lief!

Fasziniert vom schnellen Erfolg, ging es dann auch gleich ans Eingemachte. Ausgehend von einer textuellen Codebeschreibung, dem Dockerfile, lässt sich ein sogenanntes Docker Image erstellen. Letztlich ist ein solches Image nichts anderes als ein gepacktes Dateisystem mit einer minimalen Systemlandschaft und der Anwendungssoftware. Der laufende Prozess wird in diesem Fall als Container bezeichnet.

Um Docker Images möglichst portabel zu halten, sind diese oft nur wenige Hundert Megabyte klein - in vielen Fällen sogar deutlich kleiner. Folglich enthalten Images daher nur das absolut Notwendige, um einen Anwendungsprozess zu starten und zu betreiben. Etwas müßig scheint daher zunächst das Erstellen eines Dockerfiles und des davon abgeleiteten Images, muss doch jedes benötigte Softwarepaket einzeln installiert und vorkonfiguriert werden.

Die Freude ist daher um so größer, findet man die vielfältigen und qualitativ hochwertigen Docker Images der Community. „dockerhub.com" ist dafür die erste Anlaufstelle: Von Programmiersprachen über Datenbanksysteme, zu alltäglichen Programmen und komplexen Softwaresystemen, ist mittlerweile fast alles zu finden.

Die Komposition mehrerer Prozesse

Um die Komposition mehrerer Prozesse ging es im zweiten Teil. Mittels Docker Compose lassen sich mehrprozessige Anwendungsprogramme beschreiben, erstellen und betreiben. So konnten wir eine Datenbank, zwei Anwendungsserver und einen vorgeschalteten Load Balancer im Nu zusammenstellen und starten. Dabei war nicht nur bemerkenswert wie reibungsfrei die einzelnen Systeme gekoppelt werden konnten - nein, auch die Skalierung der Anwendungsserver war in unserem Beispiel nur eine Frage von Kommandos an den Docker Service. So war es etwa gar kein Problem, zehn oder zwanzig Container hinter dem Load Balancer zu betreiben. Hier hatte jemand offensichtlich ein ausgeklügeltes System gebaut.

Der erste Tag, mit Themen rund um den Betrieb eines einzelnen Docker Servers (›Hosts‹) mündete schließlich in der Vorstellung von Docker Swarm, einer Docker-Technologie, um eine überschaubare Menge von Containern verteilt auf mehreren Docker Hosts zu betreiben. Wahrlich, eine Menge an Informationen in sehr kurzer Zeit. Kaffee wurde den ganzen Tag in großen Menge konsumiert und der Trainer ließ letztendlich keine Fragen offen. So gingen wir gespannt in den zweiten Tag. Was will man mehr von einer erfolgreichen Schulung?!

Logo Kubernetes

Tag 2 - Kubernetes von Google - Ein spezielles Werkzeug für ein spezielles Problem

Der nächste Tag kreiste thematisch um das Orchestrierungswerkzeug Kubernetes von Google. Allein schon gemessen an der Zahl der beteiligten Systemkomponenten konnten wir erahnen, dass es sich hierbei um ein deutlich komplexeres System als Docker Swarm handelte. Kurz gesagt sorgt Kubernetes für den kompletten Lebenszyklus von Containern in einer Anwendungslandschaft: das Erstellen, Konfigurieren, Zusammenfügen und wieder Abbauen von Container-Diensten erfolgt dabei, anforderungsgerecht, als verteiltes System.

Kubernetes ist ein sehr spezielles Werkzeug für ein ebenso spezielles Problem: der Orchestrierung von Softwarediensten. Damit ist es sehr gut ausgerichtet auf die oben beschriebenen Anforderungen nach Flexibilität und zügiger Inbetriebnahme. Jedoch erscheint es bei weit weniger starken Anforderungen ungeeignet und überzogen. Trotz weiterer praktischer Übungen (unter anderem mit der Google Cloud) und einer intensiven Betreuung durch den Trainer war den Teilnehmern eine gewisse Sättigung oder gar Überforderung anzumerken. Sicher haben die meisten das Verständis für den Unterschied der verschiedenen Systeme als Gewinn des zweiten Tages mitgenommen.

Fazit

Was ist also das Fazit? Was haben wir als Teilnehmer mitgenommen?

Michael Skrynski - Developer

Michael Skrynski ist zu der Ansicht gelangt, dass Docker eine wirklich sehr spannende Technologie ist, um in kürzester Zeit komplette Web Services hochzuziehen. Mit der Masse an vorhandenen Images kann man mit Sicherheit davon ausgehen, dass auch wirklich für jeden Verwendungszweck etwas zu finden ist. Zudem besteht immer die Option selbst ein passendes Image zu generieren oder ein vorhandenes Image seinen Wünschen entsprechend anzupassen.

Kubernetes, als Dirigent für ein Docker-Orchester, ist ein mächtiges Werkzeug, aber auch hier gilt die Devise: Das Tool sollte zur Anwendung passen! Nicht jeder benötigt ein AWS- oder Google-Cloud-Klon.

Bezogen auf die dkd stellt er klar, dass Kubernetes sicherlich sehr interessant ist, zur Zeit allerdings noch nicht das richtige Produkt darstellt. Dies liegt daran, das für die dkd schlicht der Anwendungsfall fehlt. Einzelne Docker Container oder komplexere Applikationen, welche über Docker Composer verwaltet werden, finden hingegen durchaus einen Platz in unserer Infrastruktur. Die zwei Trainingstage haben auf jeden Fall dem Mysterium Docker, als reine Blackbox, einige Geheimnisse entlockt und die Hemmschwelle für einen Einsatz, auch im produktiven Betrieb, deutlich gesenkt.

Andrej Kolos - Netzwerkadministrator

Andrej Kolos möchte betonen, wie hervorragend sich Docker sowohl für Entwicklungsumgebungen als auch zum Testen eignet; darüberhinaus aber auch für den komplexen, hochverfügbaren und skalierbaren, produktiven Betrieb. Das Spannende dabei sei, dass der gesamte Denkansatz auf den Kopf gestellt wird. Die Konzeption und der Betrieb geht von dem bisherigen Ansatz weg: Die Anwendung wird von einer Abteilung programmiert und die Bereitstellung der Infrastruktur, auf der die Software laufen muss, wird von einer anderen Abteilung betrieben.

Die DevOps-Philosophie kommt bei Docker viel besser zum Einsatz: man stellt die Applikation bereit und die für den Betrieb notwendigen Services und Ressourcen kommen als Docker Container und Volumes dazu.

Dabei wird auch klar, dass die Konzeption, die Umsetzung, der Betrieb und die Softwarewartung von Entwicklern und Sysadmins zusätzliches Know-how in der Absicherung sowie dem Performance- und Security-Monitoring abverlangt.

Ivan Golman - Netzwerkadministrator

Ivan Golman drückt schließlich seine Erfahrungen mit Kubernetes am zweiten Tag so aus: Diese Container-Lösung ist sehr interessant, weil sie trotz ihres jungen Alters (2014) und dank ihrer Ähnlichkeit mit Docker Swarm noch viel mehr auf Container Deployment und Lifecycle ausgerichtet ist. Bemerkenswert ist hier die Art und Weise, wie sich Google dem Thema Container Cloud professionell nähert.

Alles in allem eine erfolgreiche Schulung, die neugierig auf mehr macht. Weitere Informationen findet Ihr auch auf der Containerdays-, Docker- und Kubernetes-Seite.

Wir danken an dieser Stelle den Trainern: André Hirsinger und Alexander Pinnecke und dem dkd-Team - Ivan Golman, Andrej Kolos, Nicolai Reuschling, Michael Skrynski und Timo Hund - für den interassanten Bericht.