V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mmmeeexxa
V2EX  ›  Docker

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

  •  
  •   mmmeeexxa · 10 天前 · 492 次点击

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

    4 条回复    2024-09-25 21:14:38 +08:00
    ztm0929
        1
    ztm0929  
       10 天前 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  
       10 天前
    0.0.0.0 是多有 ip 的监听,对于服务的监听在没有拿到 ip 的时候服务需要正常启动,而且即便有 ip 也需要查询,对软件开发增加了成本。
    XiLingHost
        3
    XiLingHost  
       10 天前
    容器内有可能得到的对端 IP 是 host.docker.internal 的 IP ,是宿主机上的 docker-proxy 转发的流量
    JerryYuan
        4
    JerryYuan  
       10 天前 via Android
    你可以理解宿主机就是个路由器,docker 是放在 lan 侧的一堆主机(bridge 网络下)。端口映射和路由器 NAT 上的端口转发一致。从宿主机外访问容器就好比从路由器 wan 侧访问路由器'公网'地址。宿主机和路由器一样,在 lan 侧同样是有个 172 的内网地址,外部来的数据包会用这个地址转发给容器。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   734 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 21:55 · PVG 05:55 · LAX 14:55 · JFK 17:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.