Redesign, Docker, redesign!

Docker 1.13 bringt Rückwärtskompatibilität des CLIs und Kommando-Redesign

Dominik Mohilo

Docker-Logo (© Docker, Inc.)

Docker ist nach wie vor das vermutlich populärste Container-Tooling der Welt. Nachdem die letzten beiden Updates die Technologie hinter dem goldigen Wal allerdings grundlegend verändert haben, stand für Docker 1.13 ein Kommando-Redesign und eine verbesserte Rückwärtskompatibilität auf der Agenda. Wir haben uns angesehen, was sich in Docker 1.13 getan hat.

Betrachtet man sich die Entwicklung von Docker, könnte man nach den Versionen 1.11 und 1.12, die jeweils sehr tiefgreifende Änderungen mit sich brachten, auch für die aktuelle Version 1.13 Großes erwarten. Docker 1.13, das sei vorweg gesagt, erfindet das Rad (oder den Container) mit dem aktuellen Update nicht neu. Dennoch gibt es, neben den üblichen Bugfixes und Stabilitätsupdates, einige neue Features.

Swarm Mode Commitment

Die harsche Kritik an Docker 1.12 und dem in den Kern implementierten Swarm Mode hat das Entwickler-Team scheinbar kalt gelassen. Docker 1.13 bringt die Unterstützung für Compose-Dateien für das Kommando docker stack deploy. Dadurch lassen sich Services durch eine docker-compose.yml-Datei direkt deployen. Das Swarm Service API wird dadurch flexibler und für Nutzer wird die Usability verbessert. So lässt sich zum Beispiel nun die gewünschte Nummer von Instanzen je Service spezifizieren. Einen Multi-Host und Multi-Service Stack zu deployen, ist dadurch über eine einzige Zeile durchführbar:

docker stack deploy --compose-file=docker-compose.yml my_stack

Command Line Interface

Die oben genannten Stabilitätsverbesserungen beinhalten unter anderem auch eine erweiterte Rückwärtskompatibilität innerhalb des CLIs. Wer nach einem Update schon einmal die Fehlermeldung „Error response from daemon: client is newer than server“ erhalten hat, kann sich nun freuen: ab Docker 1.13 wird diese Nachricht seltener erscheinen. Grund dafür ist die Fähigkeit des neuen CLIs, mit älteren Daemons zu kommunizieren. Besonders für Nutzer, die noch ältere Docker-Engines nutzen müssen, ist diese Änderung elementar. Das Docker-Team hat sich damit zudem einem der Hauptkritikpunkte nach Docker 1.12 angenommen.

Auch die Struktur des CLIs wurde für die neue Version aufgebohrt. Mit 40 Kommandos ist es den Machern ein wenig zu überladen, außerdem werden manche davon kaum genutzt. Daher wurden sämtliche Kommandos nun neu gruppiert und liegen ab sofort unter dem logischen Objekt, mit dem sie interagieren. Die Kommandos list und start sind beispielsweise nun Subkommandos von docker container, während das Kommando history dem Objekt docker image zugeordnet ist. Zukünftig soll man also zum Starten eines Containers den Befehl docker container start verwenden. Aber keine Sorge: Auch die alte Syntax wird weiter unterstützt.

Lesen Sie auch: Docker tritt der Eclipse Foundation bei, kündigt Eclipse-Che-Support an

Beobachten und aufräumen

Im Bereich des Monitorings wartet Docker 1.13 mit einem experimentellen Kommando auf, das das Debuggen von Services erleichtern soll. Anstatt manuell Hosts und Container zu suchen, die einen bestimmten Service antreiben, und dann Logs aus den jeweiligen Containern herauszuziehen, kann man jetzt auch testweise das Kommando docker service logs verwenden. Hierdurch werden Logs aus allen Containern gezogen, in denen der jeweilige Service läuft, und in die Konsole gestreamt. Auch ein experimenteller, Prometheus-artiger Endpoint ist Teil der neuen Docker-Version.

Wieviel Speicher Docker gerade verwendet, lässt sich mit Docker 1.13 leichter herausfinden und auch das Entfernen ungenutzter Daten wurde vereinfacht. Die beiden Kommandos docker system df und docker system prune sorgen für Sauberkeit und Übersicht. Ersteres ruft eine Übersicht über den genutzten Speicher auf, während letzteres sämtliche ungenutzte Daten entfernt.

Sonstiges

Builds auf verteilten Daemons können durch die Flag --compress ab Version 1.13 beschleunigt werden. Nutzt man diese Flag, wird der Build-Kontext komprimiert, der vom CLI an den Daemon geschickt wird. Die experimentell verfügbare Flag --squash sorgt hingegen dafür, dass Docker sämtliche Dateisystem-Layer, die ein Build produziert hat, in einen neuen einzelnen Layer zusammenfasst.

Auch Nutzer von AWS und Azure können sich freuen: Docker ist für die beiden Cloud-Ökosysteme nun produktionsfertig.

Weitere Informationen zum Update gibt es auf dem Blog von Docker. Mac-User können Docker hier herunterladen, für Windows-Nutzer ist es hier verfügbar.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

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