docker remote api无法将端口绑定到主机

时间:2014-12-29 03:31:58

标签: python docker

我试图使用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。

1 个答案:

答案 0 :(得分:1)

看起来您的PortBindings参数略有偏差。你错过了"HostPort":

将其更改为:

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

来自docs

  
      
  • PortBindings - 公开的容器端口的映射以及它们应映射到的主机端口。它应该以{{   < port> /< protocol>:[{“HostPort”:“< port>” }注意端口   被指定为字符串而不是整数值。
  •