docker stack deploy不使用创建的覆盖网络

时间:2017-08-22 00:31:14

标签: docker docker-swarm swarm

我使用此命令创建了一个覆盖网络:

docker network create --driver overlay --internal --subnet 192.168.0.0/24 test

然后我尝试使用一个服务部署堆栈。堆栈的yaml文件看起来像:

---
version: "3.0"
services:
  web1:
    image: "test"
    ports:
       - "12023:22"
    hostname: "ard014-web1"
    networks:
      - test
networks:
  test:
    driver: overlay

我使用以下命令部署堆栈:

docker stack deploy -c test.yaml test

如果我使用docker network ls检查网络,我会发现使用名称test_test创建新的覆盖网络,并且容器使用此网络而不是已创建的网络。这是预期的行为吗?我希望堆栈使用我手动创建的网络而不是创建新网络,因为我想控制覆盖网络使用的ip CIDR范围。我怎么能实现呢?

1 个答案:

答案 0 :(得分:4)

要使用现有网络,请将其定义为“外部”:

version: "3.0"
services:
  web1:
    image: "test"
    ports:
       - "12023:22"
    hostname: "ard014-web1"
    networks:
      - test
networks:
  test:
    external: 
      name: test

此处有更多详情:https://docs.docker.com/compose/compose-file/#external-1