2016-06-14 3 views
0

Ich verwende Docker Remote Api und Python-Anfragen v2.2.1, um eine Exec-Anweisung auszuführen. Dies ist der Code, den ich verwende:Fehler 500 beim Ausführen von Exec starten mit Docker Remote API

import requests 
import json 

containerName = 'my_container_name' 
startContainerRequest = requests.post('http://127.0.0.1:4243/containers/' + containerName + '/start') 

print startContainerRequest.status_code #result: 204 

payload = {'Cmd':["date"]} 
headers = {'Content-type': 'application/json'} 
execCreateRequest = requests.post('http://127.0.0.1:4243/containers/' + containerName + '/exec', data=json.dumps(payload), headers=headers) 

print execCreateRequest.status_code  #result: 201 

execStartRequest = requests.post('http://127.0.0.1:4243/exec/' + execCreateRequest.json()['Id'] + '/start', headers=headers) 

print execStartRequest.status_code  #result: 500 
print execStartRequest.text    #EOF 

Die letzte REST-Anfrage schlägt fehl. Exec inspect funktioniert mit der gleichen ID, so ist die ID nicht das Problem. Das Verwenden eines anderen Befehls als das Datum in der Nutzlast schlägt ebenfalls fehl. Ich habe es mit verschiedenen Containern versucht, aber die gleichen Ergebnisse erzielt. docker exec my_container_name date vom Terminal funktioniert.

Hier sind meine DOCKER_OPTS von/etc/default/Docker:

DOCKER_OPTS="--dns *privateDNS* --dns 8.8.8.8 -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock" 
+0

Hat ein JSON-Körper auf die '/ Starten' Hilfe hinzufügen? – Matt

+0

Ja, das hat den Trick gemacht. Soll es so funktionieren, oder ist das ein Bug in der Ruhe api? Fühlen Sie sich frei, um Ihren Kommentar in eine Antwort zu konvertieren, ich würde akzeptieren und upvote – Jakob

+0

Nicht sicher, vielleicht ein Problem auf GitHub zu überprüfen. Einige JSON-APIs benötigen mindestens '{}', damit sie als JSON analysiert werden. – Matt

Antwort

2

hinzufügen JSON Körper auf die Exec start POST request

POST /exec/e90e34656806/start HTTP/1.1 
Content-Type: application/json 

{ 
"Detach": false, 
"Tty": false 
} 
Verwandte Themen