我试图使用docker
的远程api绑定主机,但它总是失败。
我使用python和dict
传递此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']}}
}
然后我使用远程api来检查容器,它给了我以下内容:
"NetworkSettings":{
"Bridge":"docker0",
"Gateway":"172.17.42.1",
"IPAddress":"172.17.0.48",
"IPPrefixLen":16,
"PortMapping":null,
"Ports":{"22/tcp":null,"80/tcp":null}
}
我也尝试使用此链接Binding a port to a host interface using the REST API中的方法, 但是当我发布数据以启动容器时,它会引发HTTP错误500.所以我想是否已经更改了docker远程api。
答案 0 :(得分:1)
看起来您的PortBindings
参数略有偏差。你错过了"HostPort":
将其更改为:
'HostConfig':{'PortBindings':{'80/tcp':[{ "HostPort": '15080' }] }}
来自docs:
- PortBindings - 公开的容器端口的映射以及它们应映射到的主机端口。它应该以{{ < port> /< protocol>:[{“HostPort”:“< port>” }注意端口 被指定为字符串而不是整数值。