我还没有完全理解端口转发与docker一起使用的方式。
我的方案如下:
这个EXPOSE命令到底在Dockerfile中做了什么?我知道docker守护进程本身处理网络连接,在调用“docker run”时我也告诉我应该使用什么图像...
由于
答案 0 :(得分:0)
如果您正在侦听应用程序中的端口,则需要准确公开此端口。例如。
HttpServer.bind('127.0.0.1', 8000).then((server) {...}
需要“EXPOSE 8000”。像这样你可以在你的应用程序中听几个到几个端口,但是然后需要将它们全部暴露出来。
我是对的吗?
答案 1 :(得分:0)
在dockerfile中公开端口允许您使用-P
命令上的docker run
(请参阅here)标记来启动容器。
一个简单的用例可能是你将nginx放在负载均衡服务器上的端口80上,并且它会在位于coreos docker服务器上的几个docker conatiner上对这些流量进行负载平衡。由于您的每个应用都使用相同的端口,8000,您将无法单独访问它们。因此,docker会将每个容器映射到主机上的高随机且非冲突端口。因此当你达到49805时,它会转到容器1s 8000,当你达到49807时,它会转到容器2s 8000.