请教 docker 使用,端口冲突的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
codermali
V2EX    Docker

请教 docker 使用,端口冲突的问题

  •  
  •   codermali 2024-04-29 06:32:52 +08:00 1739 次点击
    这是一个创建于 531 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我自己的 docker 上部署了很多服务,其中有很多都需要发送邮件通知,也就是说要占用 465 ,或者 587 ,所以就会冲突了。 想请教下会有什么解决方案吗?

    10 条回复    2024-04-30 09:59:06 +08:00
    yidinghe
        1
    yidinghe  
       2024-04-29 06:47:01 +08:00 via Android
    感觉你描述有问题。一个服务需要发邮件,只需要连到邮件服务器即可,自身不需要侦听任何端口。
    customsshen
        2
    customsshen  
       2024-04-29 07:45:47 +08:00
    Bridge 模式改下映射端口
    SoulSleep
        3
    SoulSleep  
       2024-04-29 08:20:36 +08:00
    我的 CPU 烧了...你试过真的会冲突吗....比如你都要使用 smtp.qq.com:465
    哪怕你在一台机器上部署 100 个微服务在发邮件,也不会冲突...
    NoobNoob030
        4
    NoobNoob030  
       2024-04-29 08:51:02 +08:00
    没看懂,建议重新描述一下
    oreader996
        5
    oreader996  
       2024-04-29 09:05:19 +08:00
    这种不要占用端口,叫做连接邮件服务,只是链接比如 smtp.qq.com:465 这个端口,自身不需要占用端口
    oreader996
        6
    oreader996  
       2024-04-29 09:06:07 +08:00
    上面错别字有点多,我重新输入一下。这种不叫占用端口,叫做连接邮件服务,只是连接比如 smtp.qq.com:465 这个端口,自身不需要占用 465 这个端口的
    cpstar
        7
    cpstar  
       2024-04-29 09:09:22 +08:00
    是不是需要补充一下网络基础知识呢?比如什么叫服务端端口,什么叫客户端端口。5# 说的自身也会占用端口,只不过作为客户端端口,会随机启用一个未占用的端口来连接服务端端口。然后如果很多都是服务,那必然要分别使用不同的端口,但是“发邮件通知”完全就是要给客户端的行为。谁告诉你发邮件也要占用 465 或者 587 的。
    soundlife
        8
    soundlife  
       2024-04-29 09:20:08 +08:00
    - 邮件服务端才需要监听 465 587 端口,客户端连接服务端时一般使用的是高位的随机分配端口。docker 不需要配置端口映射;
    - 回到 docker 的问题上,可以创建一个 docker 网络,将服务端和客户端的容器都加入到这个网络中,就不需要对外映射端口。如果非要对网络外提供服务就再套个 nginx 。这样就只需要映射 nginx 的端口就可以了
    codermali
        9
    codermali  
    OP
       2024-04-29 20:08:39 +08:00
    @yidinghe
    @customsshen
    @SoulSleep
    @NoobNoob030
    @oreader996
    @cpstar
    @soundlife

    感谢各位的回复。
    不过你们的回复我感觉跟我的描述的不是一回事,可能是我的描述不是很清楚,现在补充一下。
    我使用 docker ,习惯使用 docker compose 进行部署。
    如下是 gitlab 服务的端口映射,占用了 587 端口:

    ```
    ports:
    - 32680:80
    - 587:587
    ```

    如果我其他的服务也需要发送邮件通知,那么,那么也是需要使用 587 端口的。这样,docker compose 是启动不了的。
    我想问的就是这个。
    NoobNoob030
        10
    NoobNoob030  
       2024-04-30 09:59:06 +08:00
    1. 其他服务换外部端口,例如 10587:587 ,宿主机的 587 端口只能给一个容器用
    2. 如果只是容器和容器之间访问,可以加入同一个 network,通过 gitlab:587 访问,没必要端口映射到宿主机
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2703 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 09:02 PVG 17:02 LAX 02:02 JFK 05:02
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86