Docker ist ein fantastisches Stück Software. Es ist immer wieder Thema bei unseren Konferenzen, wir bieten passende Workshops an, nutzen es selbst und bloggen darüber. Docker wirbelt seit einiger Zeit den Markt für Container richtig auf, auch wenn es erst mal unter der Haube nichts großartig Neues entwickelt hat. Docker nutzt in erster Linie Mechanismen die schon da sind, aber auf kreativ-konsequente Art und Weise. Durch seine Popularität trug und trägt es natürlich intensiv dazu bei, seine Grundbausteine zu verbessern. Docker nutzt alles was der Kernel so rund um Container bereitstellt und je nach persönlicher Vorliebe echte oder virtuelle Filesysteme, für die exzessives Erstellen von Snapshots per Design eh schon vorgesehen und damit nicht teuer ist. Du wolltest immer schon wie du das von der Software-Entwicklung kennst bei Bedarf nach jedem Handgriff einen “Commit” eines ganzen Servers? Docker könnte deine neue Liebe sein!

Du gehörst zu den Snapshot-Geschädigten, denen schon mal das sündhaft teure Storage-System dank Snapshot-Voodoo fast um die Ohren geflogen wäre? Bist geprägt von der erbärmlichen Performance von LVM-Snapshots? Keine Sorge, richtig gemacht sind auch tausende von Snapshots auf einem System heute kein Problem mehr. Klar, der Haken ist wie immer dieses “richtig gemacht”, aber da hilft Docker. Man hat out-of-the-box zwar keinen Ferrari, aber einen halbwegs aktuellen Diesel-Golf der zuverlässig ohne ohne zu murren dahintuckert. Wobei Tuckern keinesfalls im Sinne eines alten Traktors zu verstehen ist. Man kriegt mit Docker ohne ölverschmiert rumwerkeln zu müssen frei Haus zumindest einen richtig sportlichen GT oder dergleichen. Und wer sich die Hände schmutzig machen will kriegt das Ferrari-Pferdchen nicht nur als Aufkleber auf die Motorhaube sondern mit all seinen schnellen Freunden auch unter selbige.

Was ich absolut jedem empfehlen kann: eine Probefahrt! Schnapp dir Docker und probier es aus. Spiel damit! Wenn dir das Spielen allein keinen Spaß macht, dann komm zu einem unserer Workshops, gerne auch zur OSDC 2015, mit Gleichgesinnten macht es definitiv mehr Freude! Auch wenn es nicht das richtige Tool für dich ist – es erweitert definitiv den eigenen Horizont. Es tickt und “denkt” anders, als du das gewohnt bist. Warum es nicht das richtige Tool sein könnte? Weil sehr viele Anwendungen sich nur schwer so kapseln lassen, als dass sie mit Docker sofort Spaß machen würden. Ich kann zwar problemlos mit Docker vollwertige Systeme mit SSH, lokalem Mailer und allem was dazugehört betreiben – aber das ist eigentlich nicht im Sinne des Erfinders. Docker möchte nämlich je eine Applikation pro Container betreiben. Die meisten Applikationen sind dafür schlicht nicht ausgelegt. Wer jetzt also mal eben schnell seine Oracle-Datenbank in einen Docker-Container packen will, der wird sich schwer tun. Was nicht heißt dass es nicht geht, aber so war’s halt erst mal nicht gedacht.

Es ist gar nicht so einfach in wenigen Worten zu beschreiben, wie so eine “eigenständige” Applikation aussehen soll. Eine interessante Lektüre rund um dieses Thema bietet die Twelve-Factor App. Wenn deine Anwendung diese zwölf Punkte umsetzen kann stehen die Chancen gut, dass sie sich in einem Default-Docker-Container pudelwohl fühlt. Was nicht heißen muss, dass man jetzt all seine Anwendungen sofort umschreiben muss. Mit dem Thema beschäftigen sollte man sich auf alle Fälle, auch hier stehen die Chancen nämlich gut, dass man hinter der Cloud plötzlich wieder ein neues Stück Horizont entdeckt.

Docker setzt eine ganz neue Arbeitsweise voraus und nimmt damit Einfluss auf alles. Quer durch die Bank wird vom Testing über das Konfigurationsmanagement, vom Logging und Mail-Routing bis zum Monitoring alles durcheinandergewirbelt. Für den einen ist das der neue heilige Gral, der andere nutzt es nur um den durch automatisierte Tests generierten Overhead zu minimieren. Was ich aber ausnahmslos jedem ans Herz legen möchte sind die dem Prinzip von Docker zugrunde liegenden Techniken.

Egal ob mit Docker “so wie es sein soll”, ob mit zu System-Containern aufgeblasenen Docker-Containern oder gleich klassisch mit LXC, du solltest diese Werkzeuge kennen, nutzen und lieben lernen! Der Linux-Kernel stellt schon eine ganze Weile mächtige Komponenten zum Verwalten von Containern bereit. Und noch viel viel länger gibt es Kernel-Patches die ähnliches bieten konnten. Ich habe schon vor über 10 Jahren Container unter Linux in sensiblen Umgebungen produktiv einsetzen können und es nie bereut. Die laufen immer noch! Auf meinem Arbeits-Notebook lebt ein ganzer Zoo an internen LANs, Bridges, Firewalls und Containern. Wenn ich ein paar neue leere Debian-Container brauche, habe ich die in wenigen Sekunden am Laufen. Auch wenn ich offline bin. Cgroups erlauben es, Prozessgruppen gezielt zu isolieren und deren Resourcen-Nutzung fein granular zu steuern. Braucht nicht jeder, aber gut zu Wissen, dass es bei Bedarf möglich ist.

Und einen ganz speziellen Charme hat natürlich das ganze Snapshotting-Thema. Aber bevor ich dazu auch noch weiter aushole, was rede ich mir eigentlich den Mund fusselig? Probiert es einfach aus. Jetzt. Gleich. Oder geht doch lieber Skifahren.

Wünsche euch allen ein schönes Wochenende!!

Thomas Gelf

Autor: Thomas Gelf

Der gebürtige Südtiroler Tom arbeitet als Principal Consultant für Systems Management bei NETWAYS und ist in der Regel immer auf Achse: Entweder vor Ort bei Kunden, als Trainer in unseren Schulungen oder privat beim Skifahren in seiner Heimatstadt Bozen. Neben Icinga und Nagios beschäftigt sich Tom vor allem mit Puppet.