V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mmnnyycc
V2EX  ›  问与答

docker 暴露多个端口怎么区分?

  •  
  •   mmnnyycc · 2018-03-07 11:53:11 +08:00 · 3608 次点击
    这是一个创建于 2452 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://www.cockroachlabs.com/docs/stable/start-a-local-cluster-in-docker.html#os-linux

    里面: -p 26257:26257 -p 8080:8080

    解释: -p 26257:26257 -p 8080:8080: These flags map the default port for inter-node and client-node communication (26257) and the default port for HTTP requests to the Admin UI (8080) from the container to the host. This enables inter-container communication and makes it possible to call up the Admin UI from a browser.

    我又个疑惑: 8080 是管理后台 UI 的端口,26257 是集群减通信的端口号。外部 8080 被占用了可以用 8081:8080 来映射。

    1.请问容器内部端口可以换吗?就是 26257 和 8080,如果可以换怎么分区这两个?

    2.多个不同的容器内部都用 8080 会冲突吗?

    6 条回复    2018-03-07 14:22:16 +08:00
    heimeil
        1
    heimeil  
       2018-03-07 12:07:21 +08:00
    容器内端口是隔离的,可以想象每个容器都是虚拟机
    tomczhen
        2
    tomczhen  
       2018-03-07 12:18:25 +08:00
    bridge 网络下可以把主机看成路由器,外部是通过 NAT 访问的,与路由器上的端口映射类似,同一个 Network 下的容器是同一台交换机下不同设备,每个容器可用端口范围都是独立的。

    容器间互访,可以通过容器内网 IP 和 内网端口——即容器自身端口。外部想访问容器,就必须把容器端口 EXPOSE ——映射出来,暴露的端口属于主机端口,是不能冲突的。
    mmnnyycc
        3
    mmnnyycc  
    OP
       2018-03-07 13:59:55 +08:00
    @heimeil
    @tomczhen 谢谢
    tomczhen
        4
    tomczhen  
       2018-03-07 14:08:07 +08:00 via Android
    补充一下,bridge 网络下,内外端口不一致时可能会产生一些问题。比如服务检测到的配置或环境,是容器内网 IP 和端口,如果一些自动生成的 URI 会使用这些值,就会产生问题。

    另外就算映射了端口,外部客户端也是无法通过容器内网 IP 访问容器。

    不过也应该不是绝对,如果路由可达应该可以,但这时应该也不算是 bridge 网络了。
    mmnnyycc
        5
    mmnnyycc  
    OP
       2018-03-07 14:13:39 +08:00
    @tomczhen 不同容器端口是独立的,外部的 8080 端口已经被占用了。那么只能讲内部 8080 映射到外部的其他的接口了,如果内外不一致会出问题,可以更改内部的 8080 端口吗?看着文档没说啊
    tomczhen
        6
    tomczhen  
       2018-03-07 14:22:16 +08:00 via Android   ❤️ 1
    出不出问题要看具体情况。

    修改内部端口确保内外端口一致我觉得是最优解,也容易排查问题。

    Web 应用,如果有可以配置 URL root 的选项配置最好,没有可以使用反向代理解决。

    如果是一定会把检测到的容器内 IP 返回给外部客户端使用,那用 host 网络运行容器是最直接的做法。当然,也可以看看其他网络类型能不能解决问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   939 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:12 · PVG 06:12 · LAX 14:12 · JFK 17:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.