代码之家  ›  专栏  ›  技术社区  ›  Dhaval Chaudhary

Docker compose v3指定要进入的网络?

  •  4
  • Dhaval Chaudhary  · 技术社区  · 7 年前

    我让docker为我的docker swarm堆栈编写文件。我希望我的堆栈服务部署在特定的网络上,我希望该网络成为入口网络,以便我可以使用docker的DNSRR。

    version: "3"
    services:
     a:
      image: xyz/a:dev
      ports:
       - "80:80"
       - "443:443"
      networks:
       -my_network
    b:
      image: xyz/b:dev
      ports:
      - "5000:5000"
      networks:
       -my_network
    
    networks:
      my_network:
        driver:overlay
        ipam: 
         driver: default
         config:
           -subnet: 10.0.1.0/24
    

    在这里,我可以在哪里指定该网络应该是入口网络?另外,如何指定与cli中此处指定的相同的ip范围: here

    3 回复  |  直到 7 年前
        1
  •  2
  •   yamenk    7 年前

    显然,这些选项没有在composefile中公开。文档中没有提到它们,请确保您可以检查源代码,尤其是最新的源代码 compose schema .

    唯一的选择是在命令行上创建入口网络,并将其作为外部网络从compose文件中引用。

        2
  •  0
  •   Markus    7 年前

    入口网络仅用于管理器/工作者节点。

    路由网格将所有传入请求路由到可用节点上的已发布端口,并将其路由到活动容器。 https://docs.docker.com/engine/swarm/ingress/

    您需要的是一个附加覆盖网络。所有分配给非入口的同一覆盖网络的服务都可以通过您给它们的名称相互通信。

    例如。

    docker service create --name A --network dev ...
    docker service create --name B --network dev ...
    

    服务A可以简单地做到 ping B .

        3
  •  0
  •   Rok Povsic    3 年前

    如何指定端口范围的示例:

    ports:
      - "9090-9091:8080-8081"
    

    长格式允许将模式指定为 host ingress .

    ports:
      - target: 80
        host_ip: 127.0.0.1
        published: 8080
        protocol: tcp
        mode: ingress
    

    请参见 Ports section 的docker撰写规范以了解更多详细信息。