Abh*_*aji 11 port networking docker docker-compose docker-networking
我有一个依赖于多个 docker 容器的应用程序。我使用 docker compose 以便它们都在同一个网络中进行容器间通信。但是,我的两个容器正在各自的容器内侦听相同的端口 8080,但是映射到主机上的不同端口:8072,8073。对于容器间通信,因为我们使用容器的端口,这会导致问题吗?
约束:
我是 docker 新手,我不知道如何解决这个问题。
谢谢
Daz*_*kin 14
IIUC 请参阅此处的文档:https ://docs.docker.com/compose/networking
您不需要在主机上公开每个服务的端口,除非您希望从主机访问它们,即在 docker-compose 创建的网络之外。
每个主机的端口必须是唯一的,但是docker-compose 创建的网络中的每个服务都可以不受惩罚地使用相同的端口,并由 : 引用。
在 Docker 示例中,可能有 2 个 Postgres 服务。每一个都需要一个唯一的名字:db1; db2但两者都可以使用相同的端口——“5432”,并且可以从被调用的服务web(和彼此)作为db1:8432和进行唯一寻址db2:8432。
每个服务有效地对应于不同的主机。因此,只要每个服务|主机的端口都是唯一的,就很好。而且,只要您在主机上公开的任何端口都是唯一的,您也很好....
扩展这个例子,db1可以公开端口,9432:8432但随后db2需要找到一个不同的主机端口来使用,也许是9433:8432.
在 docker-compose 创建的网络中,您可以访问db1asdb1:8432和db2as db2:8432。
从主机(在 docker-compose create 网络之外),您可以访问db1aslocalhost:9432和db2as localhost:9433。
注意:当服务端口必须可以从外部访问时(例如,web可能必须公开但dbX可能不需要公开),仅将服务端口公开给主机可能是一种很好的做法。您可能希望在调试时更自由地公开服务端口。
| 归档时间: |
|
| 查看次数: |
13013 次 |
| 最近记录: |