Run, Docker, run!

Docker 1.11 bringt die Engine für die Zukunft
Kommentare

Docker hat sich neu erfunden! Auch wenn sich an der Arbeitsweise und den Befehlen selbst nichts geändert hat, läuft unter der sprichwörtlichen Motorhaube nun ein völlig anderer Antrieb: Die Engine von Docker setzt nun auf runC und containerd auf. Damit legt Docker den Grundstein für zahlreiche neue Entwicklungen.

Mit der Veröffentlichung der Docker Engine 1.11 hat sich für die Nutzer einiges geändert. Unter anderem ist die Engine dem tiefschneidendsten Refactoring seit Entstehung des Projektes unterzogen worden. Da die Engine nun auf runC und containerd aufsetzt, ging es beim aktuellen Update vor allem darum, die Integration des neuen Tools und der neuen Runtime möglichst fehlerfrei durchzuführen. Doch was sind runC und containerd eigentlich?

runC und containerd

runC ist eine leichtgewichtige, universelle Container Runtime. Das CLI-Tool (Command-line interface) wird für das Starten und Ausführen von Containern nach den Spezifikationen des Open Container Projects (OCP) verwendet. Einer der Vorteile ist, dass Container als Unterprozess / Child Process von runC gestartet und in verschiedene andere Systeme eingebettet werden können. Die Verwendung eines Docker Daemonsist dadurch obsolet. Die Konsole ist vollkompatibel mit Docker.

Der Daemon containerd besitzt ein API und einen Kommandozeilenklienten für das Managen von Containern auf einer Maschine. Es nutzt runC, um Container gemäß der Spezifikationen der Open Container Initiative (OCI) zum Laufen zu bringen. Mit containerd ist es Nutzern möglich, checkpoint undrestore für das Klonen und die Live-Migration von Containern zu nutzen. Weitere Informationen zu containerd in Docker gibt Michael Crosby im Blog von Docker.

Zum Thema Open Container Initiative hat Arnaud Porterie auf dem Blog von Docker folgenden Kommentar verfasst, der die Signifikanz des Refactorings unterstreicht:

This is the first OCI-compliant runtime and demonstrates the progress since donating our industry-standard container format and runtime under the Linux Foundation in June of last year. […]Docker Engine is now built on containerd, so everyone who is using Docker is now using OCI. We’re proud of the progress we’ve made on the OCI with the 40+ members to continue the work to standardize container technology.

Grundlagen für die Weiterentwicklung von Docker

Im Fokus des Refactorings stand, neben der möglichst fehlerfreien Umsetzung, die Bedienbarkeit nicht verändern zu müssen. Docker 1.11 sollte also das gleiche Kommandozeilen-Interface und API behalten. Dennoch wurde mit dem Update das technische Fundament für signifikante nutzerrelevante Änderungen gegossen.

Die neue Docker-Engine. / Quelle: Docker Blog

Die neue Docker-Engine. / Quelle: Docker Blog

Frühjahrsputz

Mit der Integration von containerd haben die Entwickler die Codebasis einem großen Frühjahrsputz unterzogen. Zudem wurden einige “historische” Bugs behoben. Die Teilung von Docker in verschiedene unabhängige Tools bringt einen großen Vorteil mit sich: Programmierer, die mit der Wartung des Codes betraut sind, können sich besser auf den jeweiligen Teil der Docker-Engine konzentrieren und somit besser arbeiten.

Was die Performance angeht, wurde Wert darauf gelegt, die Geschwindigkeit von Docker – trotz des vergrößerten Kommunikationsaufwandes zwischen den Prozessen – nicht zu verringern. Den Entwicklern soll es sogar gelungen sein, die Engine schneller zu machen, in Zukunft soll die Performance noch weiter verbessert werden.

Ein neues Ökosystem für Container

Mit der Runtime runC wurde der erste Schritt in Richtung eines neuen Ökosystems zur Containerausführung geschaffen. Durch die offene Spezifikation der Runtime wird es in zukünftigen Versionen der Engine möglich, verschiedene Exekutoren zu spezifizieren.

Das ist die Grundlage für ein Ökosystem von alternativen Ausführungs-Backends, ohne Docker selbst zu verändern. Es können so von Mitgliedern des Ökosystems auch eigene konforme Exekutoren erstellt und der Spezifikation hinzugefügt werden. Die Community profitiert dadurch von aktuellen Versionen, ohne auf die offizielle neue Version angewiesen zu sein.

Für Nutzer heißt das, dass man schließlich aus verschiedenen Container-Exekutoren wählen kann, die für verschiedene Plattformen geeignet sind oder unterschiedliche Sicherheits- und Performancefeatures haben.

Weitere Features

Neben den großen Veränderungen an der Engine gab es mit Update 1.11 auch einige Änderungen inCompose, Swarm, Machine und der Registry.

Swarm bringt mit Version 1.2 eine stabile Unterstützung für das Rescheduling von Containern, wenn einNode abstürzt; das Rescheduling wird nun als sicher für die Produktion angesehen. Außerdem wurde die Fehlerausgabe verbessert.

In Version 0.7 von Machine wurde der Treiber für Microsoft Azure aktualisiert. Er verwendet nun die neuen APIs und ist leichter zu authentifizieren.

Compose liegt nun in Version 1.7 vor, und das Kommando docker-compose exec kann nun ebenso wie docker exec verwendet werden.

Registry 2.4 hat einen Garbage Collector an Bord. Ein Tool für das Aufräumen und Säubern der Daten vonImages, die von Nutzern gelöscht wurden, wurde dem Programm hinzugefügt. Weitere Informationen zu dem Garbage Collector gibt es hier. Zudem ist der S3-Treiber schneller und stabiler geworden.

Weiterführende Links zu Dockers aktuellem Update:

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -