Docker撰写v3指定网络进入?

时间:2017-12-05 12:20:38

标签: docker networking docker-compose docker-swarm

我有docker-compose文件用于我的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:here

中指定的ip-range相同的ip-range

3 个答案:

答案 0 :(得分:2)

显然,这些选项不会在composefile中公开。文档没有提及它们,并确保您可以检查源代码,特别是最新的compose schema

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

答案 1 :(得分:0)

入口网络仅适用于管理员/工作人员节点。

  

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

你想要的是一个额外的覆盖网络。分配给同一覆盖网络的所有服务都不能进入,可以通过您提供的名称相互通信。

E.g。

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

服务A只需ping B

答案 2 :(得分:0)

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

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

长格式允许将模式指定为 hostingress

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

有关详细信息,请参阅 docker-compose 规范的 Ports section