Man kann keine Befehle vom Host in Docker Container übermitteln? Das ist falsch!

Allerdings ist dazu eine spezielle Konfiguration erforderlich. e-fork verwendet als Entrypoint im Dockerfile auf den jeweiligen Anwendungfall zugeschnittene Startup-Scripts, deren letzter Eintrag immer eine bash startet. So ist es möglich, ganz ohne ssh Zugang mit docker attach sich vom Host aus auf den jeweiligen Container zu verbinden und beliebige Befehle auszuführen.

Um nun scriptgesteuert beim Neustart des Host-Servers oder des docker Service Dienste innerhalb eines Containers sauber zu beenden, genügt ein einfaches echo, welches mittels pipe an den Container gesendet wird.

echo "service <servicename> stop" | docker attach <containername>

Mit docker logs kann man sich vergewissern, daß der Befehl tatsächlich ausgeführt wurde. Natürlich sind weitere Anwendungsfälle denkbar.

2 Comments