2016-06-14 3 views
0

Docker Remote Api과 python이 v2.2.1을 사용하여 exec 문을 실행하고 있습니다. 이것은 내가 사용하고있는 코드입니다 :Docker Remote API로 exec 시작시 오류 500

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 

마지막 REST 요청이 실패합니다. Exec inspect은 동일한 ID로 작동하므로 id는 문제가되지 않습니다. 페이로드에서 날짜와 다른 명령을 사용하면 실패합니다. 나는 다른 컨테이너로 시도했지만 같은 결과를 얻었습니다. 터미널에서 실행중인 docker exec my_container_name date이 작동합니다.

여기 내 DOCKER_OPTS는은/etc/기본/고정 표시기에서 다음과 같습니다`/ start` 도움에 JSON 본체를 추가합니까

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

에 JSON 본문을 추가 하시겠습니까? – Matt

+0

예, 그 트릭을했습니다. 그것은 그렇게 작동해야합니까, 아니면 이것은 나머지 API의 버그입니까? 답변을 귀하의 의견을 변환 자유롭게 받아 들일 것이고 upvote – Jakob

+0

확실하지, 아마도 github에 문제를 확인하십시오. 일부 JSON API는 적어도'{} '이상 필요하므로 JSON으로 구문 분석합니다. – Matt

답변

2

Exec start POST request

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

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