Docker每个网络端口映射

时间:2019-04-21 13:07:47

标签: docker docker-compose docker-networking

我正在寻找一种方法,可以将同一端口映射到2个不同的端口,每个端口用于另一个网络中的另一个容器。 考虑以下docker-compose场景:

services:

  web:
    build: .
    ports:
      - "8080:8080"
    networks:
      Net1:
      Net2:

  serv1:
    image: tomcat:7.0.92-jre8
    networks:
      Net1:
  serv2:
    image: tomcat:7.0.92-jre8
    networks:
      Net2:

现在我真正想做的是实际映射“ Web”服务端口8080,以便serv1可以将其用作8081,serv2将其用作8082。

那有可能吗?

谢谢

1 个答案:

答案 0 :(得分:2)

端口将发布到主机,而不发布到docker网络,也不会发布到其他docker容器。因此,上面的“ 8080:8080”将Docker主机上的端口8080映射到该容器的端口8080。

对于容器到容器的通信,这是使用docker的内部DNS进行服务发现和容器端口进行的。因此,serv1和serv2都可以连接到http://web:8080,以在其容器端口上访问Web服务。但这绝不会阻止serv1和serv2在自己希望的任何端口上的自己的容器中侦听。