jinhan13789991
V2EX  ›  Docker

求助,外网无法访问 docker bridge 模式的容器服务

  •  
  •   jinhan13789991 · Jul 1, 2020 · 5158 views
    This topic created in 2193 days ago, the information mentioned may be changed or developed.
    先说一下情况,我有一台服务器,在内网中,上面跑 docker 开各种服务。
    内网可以访问 docker 容器中的各种服务。
    现在有一台路由器,有外网 ip,路由器开端口映射到 nas 上。
    问题来了,我发现 docker 容器如果是 bridge 的网络模式,外网就无法访问。 内网可以。
    把 docker 容器网络模式该称 host,外网就可以访问。
    我有限的网络知识无法理解这个问题。特来求助 v 友

    目标就是外网能够访问 docker bridge 模式下容器的服务
    8 replies    2020-07-01 19:55:46 +08:00
    Latin
        1
    Latin  
       Jul 1, 2020
    docker bridge 会创建一块网卡的,你要做的是将 bridge 的端口映射到宿主机的端口就 ok 了。不要直接访问 docker 那块网卡。
    jinhan13789991
        2
    jinhan13789991  
    OP
       Jul 1, 2020
    @Latin 我是在容器运行的时候指定 --net='bridge' 和端口 -p '2368:2368/tcp' ,没有别的操作
    Latin
        3
    Latin  
       Jul 1, 2020
    你通过宿主机的 ip:2368 可以访问吗
    jinhan13789991
        4
    jinhan13789991  
    OP
       Jul 1, 2020 via Android
    @Latin 可以,没问题,整个局域网都能正常访问。
    但是路由器映射了 2638 端口,外网不能访问
    把容器网络改成 host 模式,外网和内网都可以访问
    jinhan13789991
        5
    jinhan13789991  
    OP
       Jul 1, 2020 via Android
    总结就是
    外网和内网是可以正常通讯
    内网和 Docker bridge 可以正常通讯
    外网和 Docker bridge 不通
    Latin
        6
    Latin  
       Jul 1, 2020
    桥接和直连理论都是可以的,桥接还有一个可能就是防火墙没有放行。
    jinhan13789991
        7
    jinhan13789991  
    OP
       Jul 1, 2020   ❤️ 1
    @Latin 非常感谢,最后发现是旁路由的问题。
    我有个旁路由,一些局域网设备是手动指定网关到旁路由的。 我把网关指向主路由,问题就解决了。。
    jinhan13789991
        8
    jinhan13789991  
    OP
       Jul 1, 2020
    宿主机之前网关是指向旁路由的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2975 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 07:34 · PVG 15:34 · LAX 00:34 · JFK 03:34
    ♥ Do have faith in what you're doing.