mmmeeexxa
V2EX  ›  Docker

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

  •  
  •   mmmeeexxa · Sep 25, 2024 · 1689 views
    This topic created in 618 days ago, the information mentioned may be changed or developed.

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

    4 replies    2024-09-25 21:14:38 +08:00
    ztm0929
        1
    ztm0929  
       Sep 25, 2024 via iPhone   ❤️ 1
    不确定你的具体命令和使用场景。

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

    我自己因为经常在外,所以是第二个,但是安全性不如第一个。
    具体请参考 https://docs.docker.com/engine/network/drivers/bridge/
    如果有帮助请点下❤️没币了😂
    a624669980
        2
    a624669980  
       Sep 25, 2024
    0.0.0.0 是多有 ip 的监听,对于服务的监听在没有拿到 ip 的时候服务需要正常启动,而且即便有 ip 也需要查询,对软件开发增加了成本。
    KagurazakaNyaa
        3
    KagurazakaNyaa  
       Sep 25, 2024
    容器内有可能得到的对端 IP 是 host.docker.internal 的 IP ,是宿主机上的 docker-proxy 转发的流量
    JerryYuan
        4
    JerryYuan  
       Sep 25, 2024 via Android
    你可以理解宿主机就是个路由器,docker 是放在 lan 侧的一堆主机(bridge 网络下)。端口映射和路由器 NAT 上的端口转发一致。从宿主机外访问容器就好比从路由器 wan 侧访问路由器'公网'地址。宿主机和路由器一样,在 lan 侧同样是有个 172 的内网地址,外部来的数据包会用这个地址转发给容器。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2967 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 04:17 · PVG 12:17 · LAX 21:17 · JFK 00:17
    ♥ Do have faith in what you're doing.