2014-12-29 7 views
2

docker의 원격 API를 사용하여 호스트를 바인드하려고했지만 항상 실패합니다. docker remote api가 포트를 호스트에 바인드 할 수 없습니다.

내가 파이썬과 urllib2 사용이 dict 건네

"NetworkSettings":{ 
    "Bridge":"docker0", 
    "Gateway":"172.17.42.1", 
    "IPAddress":"172.17.0.48", 
    "IPPrefixLen":16, 
    "PortMapping":null, 
    "Ports":{"22/tcp":null,"80/tcp":null} 
} 

I로도 상기 방법을 사용하려고 :

{ 
    'Tty':True, 
    'Volumes':[], 
    'Image':'ubuntu', 
    'Cmd':'', 
    'WorkingDir':None, 
    'Entrypoint':None, 
    'Env':None, 
    'AttachStdin':False, 
    'AttachStdout':True, 
    'AttachStderr':True, 
    'OpenStdin':True, 
    'ExposedPorts':{'80/tcp':{}}, 
    'HostConfig':{'PortBindings':{'80/tcp':['15080']}} 
} 

그럼 I 컨테이너 검사 원격 API 사용을, 다음 날 준다 이 링크 Binding a port to a host interface using the REST API, 하지만 컨테이너를 시작하기위한 데이터를 게시하면 HTTP 오류 500이 발생합니다. 그래서 도커 원격 API가 변경되었는지 여부를 추측합니다.

답변

1

PortBindings 매개 변수가 약간 꺼져있는 것처럼 보입니다. docs에서

'HostConfig':{'PortBindings':{'80/tcp':[{ "HostPort": '15080' }] }} 

: 당신은에 "HostPort":

변경을 놓치고

  • PortBindings - 노출 컨테이너 포트의지도와 그들이에 매핑해야합니다 호스트 포트를. 포트 번호는 <입니다. 포트>/<> : [{ "HostPort": "< port"}]} 포트 은 정수 값이 아닌 문자열로 지정됩니다.
+0

덕분에 "HostPort"를 내 단언에 추가했습니다. 제 질문에이를 잊어 버렸습니다. 지금 나는 오류를 발견했다, 그것은 고정물을 사용하여 데이터를 게시 할 때, 도커의 오류가 아니라, 그것은 corret, 그래서 내가 뭔가 잘못된 생각 urllib2입니다. 고마워. :) – Shawn

관련 문제