4

我正在尝试模拟运行在某个端口公开的容器化 Web 应用程序

sudo docker run -d -p 1338:1337 kermit/hellonode

在 Python 中使用docker-py。到目前为止,我得到了这个代码来启动实例:

container = c.create_container('kermit/hellonode', name='hello')
c.start(container, port_bindings={1337: ('0.0.0.0', 1338)})

但我无法访问公共端口 1338 上的容器(与第一个命令一起正常工作) - 我收到连接被拒绝错误。有谁知道我是否缺少一些选项来使 Python 调用创建功能性、可访问的容器?

检查容器告诉我端口已按应有的方式设置:

$ sudo docker port hello 1337
0.0.0.0:1338

我还尝试ports=[1337]了通话中的选项create_container,但它也没有帮助。

更新:似乎这是某种错误。解决方法是明确指定 TCP:

container = c.create_container('kermit/hellonode', name='hello', ports=[(1337, 'tcp')])
4

1 回答 1

3

我可以确认这不起作用。

这种方法工作正常,它可能对你有用:

container = c.create_container('kermit/hellonode', name='hello', ports=[1337])
c.start(container, publish_all_ports=True)
info = c.inspect_container(container)
host_port = info['NetworkSettings']['Ports']['1337'][0]['HostPort']

然后,您可以访问服务0.0.0.0:<host_port>

于 2014-01-14T16:42:17.487 回答