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

237 天前
 codermali

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

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

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

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

如果我其他的服务也需要发送邮件通知,那么,那么也是需要使用 587 端口的。这样,docker compose 是启动不了的。
我想问的就是这个。
NoobNoob030
236 天前
1. 其他服务换外部端口,例如 10587:587 ,宿主机的 587 端口只能给一个容器用
2. 如果只是容器和容器之间访问,可以加入同一个 network,通过 gitlab:587 访问,没必要端口映射到宿主机

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036570

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX