Hinter den Kulissen der Docker-Kommandozeile

Hinter der Docker-Kommandozeile steckt ein API, das JSON-Objekte zurückgibt. Wer diesen Zusammenhang versteht, kann sich bei der Arbeit mit Docker-GUIs helfen.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Docker - Container - Sicherheit

(Bild: dpa, Christian Charisius)

Lesezeit: 6 Min.
Von
  • Jan Mahn

Als Docker-Nutzer bekommt man von der Arbeit des Docker-Daemon wenig mit – ahnt womöglich nicht einmal, dass er überhaupt existiert. Dass das gewohnte Kommandozeilentool docker (das sogenannte Docker-CLI) mit Befehlen wie docker run und docker build nur eine Oberfläche für den Docker Daemon ist und mit ihm über ein API kommuniziert, erfährt man allenfalls erst dann, wenn es knirscht und man in der Dokumentation nach Hilfe sucht.

Der Docker Daemon (dockerd) ist der Server-Dienst, der auf einer Maschine mit installiertem Docker läuft und die Container verwaltet: Starten, Beenden, Images aus der Registry laden und Bauprozesse starten. Der Kommandozeilen-Client ist davon unabhängig. Er kann auf der gleichen Maschine laufen, aber auch über das Netzwerk mit einem entfernten Daemon sprechen. Dass es sich um zwei Komponenten handelt, zeigt docker version.

Zur Steuerung stellt der Daemon (in der Dokumentation auch als Server oder Engine bezeichnet) ein API nach dem REST-Paradigma bereit – standardmäßig aber nicht über das Netzwerk, sondern lokal über den Unix-Socket /var/run/docker.sock. Daher können nur Programme, die auf dem gleichen System laufen und passende Zugriffsrechte für den Socket haben, lesend und sogar schreibend darauf zugreifen. Diese Einschränkung hat einen guten Grund: Das Docker-API kennt nämlich keine Zugriffsberechtigungen. Wer es erreichen kann, darf nach Belieben Informationen über Container anzeigen, Container beenden und neue starten. Man sollte dieses API nur wohlüberlegt aus dem Netzwerk erreichbar machen. Sinnvoll ist das zum Beispiel in Umgebungen mit mehreren Docker-Maschinen. Als TCP-Port ist 2375 vorgesehen – um die Sicherheit muss man sich dann selbst kümmern, zum Beispiel mit Firewallregeln.