Reputation: 21
I was trying to use docker
's remote api to bind a host, but it always fails.
I pass this dict
using python and urllib2
:
{
'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']}}
}
Then I use remote api to inspect container, it gives me the following:
"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 also tried to use the method in this link Binding a port to a host interface using the REST API, but when I posted data to start the container, it will raise HTTP Error 500. So I guess whether the docker remote api had been changed.
Upvotes: 2
Views: 729
Reputation: 8539
Looks like your PortBindings
parameter is slightly off. You're missing "HostPort":
Change it to:
'HostConfig':{'PortBindings':{'80/tcp':[{ "HostPort": '15080' }] }}
From the docs:
- PortBindings - A map of exposed container ports and the host port they should map to. It should be specified in the form { <port>/<protocol>: [{ "HostPort": "<port>" }] } Take note that port is specified as a string and not an integer value.
Upvotes: 2