Nachgelegt: Docker-Container im laufenden Betrieb untersuchen, Teil 2

Die neue Version 1.3 von Docker ist verfügbar und enthält interessante Neuerungen. Unter anderem kennt Docker nun ein neues Kommando, um Containern im laufenden Betrieb neue Prozesse hinzuzufügen. Das ersetzt das im vorherigen Blog-Eintrag beschriebene Werkzeug nsenter.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Golo Roden

Die neue Version 1.3 von Docker ist verfügbar und enthält interessante Neuerungen. Unter anderem kennt Docker nun ein neues Kommando, um Containern im laufenden Betrieb neue Prozesse hinzuzufügen. Das ersetzt das im vorherigen Blog-Eintrag beschriebene Werkzeug nsenter.

Eine der wichtigsten Neuerungen von Docker 1.3 ist das Kommando docker exec. Es ermöglicht, neue Prozesse in einem Container während dessen Laufzeit zu starten. Daher eignet es sich hervorragend, um innerhalb des Containers ausgeführte Anwendungen zu untersuchen.

Die Verwendung ist denkbar einfach: Beim Aufruf des Kommandos ist der Name beziehungsweise die ID des Containers zu übergeben, in dem der neue Prozess gestartet werden soll. So lassen sich beispielsweise alle derzeit ausgeführten Prozesse innerhalb eines Containers auflisten:

$ docker exec <container> ps -ax

Um eine Konsole innerhalb des Containers zu starten, ist außerdem die Angabe der Parameter -i und -t erforderlich, die sich allerdings Unix-typisch zusammenfassen lassen:

$ docker exec <container> -it bash

Bei Bedarf kann man Prozesse auch im Hintergrund ausführen. In diesem Fall muss der Parameter -d angegeben werden.

Das Team von Docker erklärt in der Ankündigung von Docker 1.3, dass das Kommando docker exec an die Stelle von Werkzeugen wie nsenter tritt. An der Empfehlung, lediglich eine Anwendung pro Container auszuführen und insbesondere auf den Einsatz eines SSH-Dämons zu verzichten, ändert sich nichts:

"A number of tools, like nsinit and nsenter, have sprung up to help developers debug their Dockerized apps, but these are additional tools to find, learn, and manage.

[…]

To be clear, by providing this we’re not changing our recommended approach of “one app per container.” Instead, we’re responding to users who’ve told us they sometimes need helper processes around the app. That’s what `docker exec` is about."

Die neue Version von Docker hat noch zahlreiche weitere Neuerungen zu bieten, für Entwickler dürfte das Kommando docker exec allerdings die mit Abstand wichtigste sein.

tl;dr: Die Version 1.3 von Docker enthält das neue Kommando docker exec. Es dient dazu, einem Container im laufenden Betrieb neue Prozesse hinzuzufügen und ersetzt daher das Werkzeug nsenter. ()