2016-04-20 16 views
0

Der Versuch, einen Docker-Container im Demon-Modus mit dem Shell-Skript von java service auf Tomcat auf einer ubunty-basierten VM zu starten.Starten von Docker Dämon aus Java-Dienst

Ich habe einen Java-basierten REST-Service, der auf Tomcat bereitgestellt wurde, auf der gleichen VM habe ich Docker installiert. Ich habe eine Shell-Datei erstellt, um meinen Andock-Container zu starten. Wenn diese Shell-Datei von Terminal ausgeführt wird, funktioniert es einwandfrei. Obwohl, wenn ich diese Shell-Datei aus Java irgendwie ausführen gibt es keinen Fehler und führt nicht den Docker-Befehl in der Shell-Datei.

Beachten Sie, ob ich einen Punkt verpasst habe oder etwas falsch gemacht habe. Wäre toll wenn mir jemand helfen könnte.

Shell Datei-Code-Schnipsel.

#!/bin/bash 
echo First Parameter is $1 
echo Second Parameter is $2 
echo Third Parameter is $3 
sudo docker run -d -e PARAM1=$1 -e PARAM2=$2 -e PARAM3=$3 --name=$1 <docker_iamge_name> 

Java CodeSnippet für den Aufruf der Datei (Skript (zum Testen haben derzeit Ausgeführt Genehmigung für alle Benutzer chmod 777 über die angegebenen) beachten Sie, dies ist keine eigenständige Java-Klasse verwende ich dieser Code-Schnipsel innen auf Java-basierten REST-Dienst, die auf Tomcat bereitgestellt wird)

String command[]; 
command = new String[] {"/home/launcher/launcher_agent.sh","Param1","Param2", "Param3"}; 
Process process = Runtime.getRuntime().exec(command); 

auf die oben Javascript in dem sdtout Logs Tomcat Ausführen des folgenden

erhalten
First Parameter is Param1 
Second Parameter is Param2 
Third Parameter is Param3 

Post, wenn ich den Docker ps -a überprüfen, sehe ich nicht, dass der Container gestartet wird.

Danke für die Antwort.

Antwort

0

Ich denke, Ihr Problem ist, dass Sie versuchen, sudo in Ihrem launcher_agent.sh zu verwenden.

Um zu verstehen, was wirklich mit einem erzeugten Prozess passiert ist, müssen Sie sowohl process.getInputStream() als auch process.getErrorStream() lesen. Der letzte wird Ihnen einen genauen Fehler anzeigen (falls es einen gab).

In Ihrem Fall Sie so etwas wie bekommen sollte:

sudo: keine tty vorhanden und keine askpass Programm angegeben

+0

Danke für die schnelle Antwort, die viel Wert zu erhalten die Fehlerstrom hilft uns, dass sudo gefunden ist nicht tty presen und kein askpass. Also haben wir das sudo aus dem Skript entfernt und tomcat7 user zur docker-Gruppe hinzugefügt. Auf diese Weise funktioniert jetzt die Lösung. –

Verwandte Themen