2017-05-15 2 views
0

Wie kann man docker-Befehle von einem bash (sh) -Skript ausführen? Ich versuche zu laufen:Ausführen von Docker-Befehlen aus der Bash-Datei

#!/bin/bash 
container= $(docker ps --format "{{.ID}} {{.Names}}" -a | grep testServer | awk '/'$imid'/ { print $1 }'); 
echo $container 

aber ich bekomme eine leere für den Container.

TIA

+0

Was ist '$ imid'? –

+0

Entschuldigung - es ist ein Rest. Das Ziel war, den Containernamen zu erhalten. –

+1

Ich würde versuchen, mit einem einfachen Docker-Befehl hardcoded, bis Sie den Druckvorgang wie erwartet funktioniert. Dann beginne mit cleverer grep/awk Magie. – captncraig

Antwort

1

Es sieht aus wie der Container-ID sterr gedruckt und das $() Konstrukt erfasst nur stdout.

Gemäß this comment können Sie mit 2>&1 stderr auf stdout umleiten, aber ich bin mir nicht sicher, wie Sie das in Ihr Snippet mit der grep/awk-Verkettung einbauen können.

0

Haben einige Tests - wie vorgeschlagen - und festgestellt, dass das folgende von Bash funktioniert.

#!/bin/bash 
container=$(docker ps --format "{{.ID}} {{.Names}}" -a | grep testServer | awk '/'$imid'/ { print $1 }') 
echo $container 
if [[ $container = *[!\ ]* ]]; then 
     echo "found something"; 
else 
     echo "DID NOT find anything"; 
fi 

Ich denke, ich musste einfach etwas mehr damit herumspielen.

+0

Vielleicht ein vernünftiger Weg, es zu tun. Es sei denn, Sie müssen die genaue Container-ID erfassen, um sie später zu stoppen oder zu beenden. – captncraig

+0

Ja - ich muss die ID für später verwenden - so funktioniert es wie benötigt –

Verwandte Themen