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

docker stack deploy不';不要使用创建的覆盖网络,docker,docker-swarm,swarm,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" netw

我使用以下命令创建了覆盖网络:

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\u test创建的,容器使用这个网络而不是已经创建的网络。这是预期的行为吗?我希望堆栈使用我手动创建的网络,而不是创建新网络,因为我希望控制覆盖网络使用的ip CIDR范围。如何实现这一点?

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


此处有更多详细信息:

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


这里有更多详细信息:

我注意到我可以在已经创建的容器上使用它来更改其网络。我收到错误消息“来自守护程序的错误响应:rpc错误:code=2 desc=不支持更改服务中的网络”@tkyass有技术原因,可能服务VIP无法与滚动升级一起工作。修复方法是在进行这样的更改时删除现有服务。我注意到我可以在已经创建的容器上使用它来更改其网络。我收到错误消息“来自守护程序的错误响应:rpc错误:code=2 desc=不支持更改服务中的网络”@tkyass有技术原因,可能服务VIP无法与滚动升级一起工作。修复方法是在进行这样的更改时删除现有服务。
version: "3.0"
services:
  web1:
    image: "test"
    ports:
       - "12023:22"
    hostname: "ard014-web1"
    networks:
      - test
networks:
  test:
    external: 
      name: test