小白问一个问题,关于端口绑定

89 天前
 mmmeeexxa

为什么 docker 容器设置了端口绑定后,容器内的服务还必须监听 0.0.0.0 的地址,外部的请求才会得到响应? docker 建立了端口绑定后,来自 192.x 的请求不就被转换成了 127.x 的请求了么? 怎么理解?

872 次点击
所在节点    Docker
4 条回复
ztm0929
89 天前
不确定你的具体命令和使用场景。

如果是纯内网且 IP 不会变,就指定那个不会变的 192 内网 IP ;
如果是需要公网请求(通常 IP 也是不确定的),就 0.0.0.0 ;
如果是 Docker 宿主机自己请求,不需要输入(因为默认是 127.0.0.1 );

我自己因为经常在外,所以是第二个,但是安全性不如第一个。
具体请参考 https://docs.docker.com/engine/network/drivers/bridge/
如果有帮助请点下❤️没币了😂
a624669980
89 天前
0.0.0.0 是多有 ip 的监听,对于服务的监听在没有拿到 ip 的时候服务需要正常启动,而且即便有 ip 也需要查询,对软件开发增加了成本。
XiLingHost
89 天前
容器内有可能得到的对端 IP 是 host.docker.internal 的 IP ,是宿主机上的 docker-proxy 转发的流量
JerryYuan
89 天前
你可以理解宿主机就是个路由器,docker 是放在 lan 侧的一堆主机(bridge 网络下)。端口映射和路由器 NAT 上的端口转发一致。从宿主机外访问容器就好比从路由器 wan 侧访问路由器'公网'地址。宿主机和路由器一样,在 lan 侧同样是有个 172 的内网地址,外部来的数据包会用这个地址转发给容器。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1075679

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX