4
我试图模仿运行在使用docker-py一些端口如何在docker-py中运行基本web应用程序容器?
sudo docker run -d -p 1338:1337 kermit/hellonode
在Python暴露集装箱化的Web应用程序。到目前为止,我得到这个代码启动实例:
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
我也与create_container
呼叫ports=[1337]
选项尝试,但它并没有帮助。
更新:看起来这是some kind of bug。解决方法是明确指定TCP:
container = c.create_container('kermit/hellonode', name='hello', ports=[(1337, 'tcp')])
感谢访问服务,该工作。既然你也证实了这种行为,我[将问题报告给docker-py](https://github.com/dotcloud/docker-py/issues/141)。 – metakermit
好吧,我用@mpetazzoni建议的另一个解决方法更新了我的问题 - 这样可以手动指定所需的公共端口。 – metakermit