为什么 docker 容器设置了端口绑定后,容器内的服务还必须监听 0.0.0.0 的地址,外部的请求才会得到响应? docker 建立了端口绑定后,来自 192.x 的请求不就被转换成了 127.x 的请求了么? 怎么理解?
1
ztm0929 84 天前 via iPhone 1
不确定你的具体命令和使用场景。
如果是纯内网且 IP 不会变,就指定那个不会变的 192 内网 IP ; 如果是需要公网请求(通常 IP 也是不确定的),就 0.0.0.0 ; 如果是 Docker 宿主机自己请求,不需要输入(因为默认是 127.0.0.1 ); 我自己因为经常在外,所以是第二个,但是安全性不如第一个。 具体请参考 https://docs.docker.com/engine/network/drivers/bridge/ 如果有帮助请点下❤️没币了😂 |
2
a624669980 84 天前
0.0.0.0 是多有 ip 的监听,对于服务的监听在没有拿到 ip 的时候服务需要正常启动,而且即便有 ip 也需要查询,对软件开发增加了成本。
|
3
XiLingHost 84 天前
容器内有可能得到的对端 IP 是 host.docker.internal 的 IP ,是宿主机上的 docker-proxy 转发的流量
|
4
JerryYuan 84 天前 via Android
你可以理解宿主机就是个路由器,docker 是放在 lan 侧的一堆主机(bridge 网络下)。端口映射和路由器 NAT 上的端口转发一致。从宿主机外访问容器就好比从路由器 wan 侧访问路由器'公网'地址。宿主机和路由器一样,在 lan 侧同样是有个 172 的内网地址,外部来的数据包会用这个地址转发给容器。
|