我正在尝试模拟运行在某个端口公开的容器化 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)})
但我无法在公共(public)端口 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')])
我可以确认这行不通。
这个方法没问题,可能对你有用:
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>
访问服务
我是一名优秀的程序员,十分优秀!