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

标签 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范围。我该如何实现?

最佳答案

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

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

关于docker - docker stack deploy不使用创建的覆盖网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807274/

相关文章:

c# - VSTS 无法构建 docker 镜像

docker - Docker客户端(容器内)可以使用UNIX套接字与EC2上的Docker守护进程进行通信吗?

docker - 当我在 Portainer 中单击 "Update the stack"按钮时执行哪个命令?

docker - Windows容器是否支持多节点Swarm

linux - docker swarm 是否会在将一个节点排空到其他节点时重新安排服务?

docker - 如何将现有的群集服务添加到网络?

java - 读取文件的jar

r - 从 R 调用时,Libreoffice 给出 "Application Error"

docker - Docker群问题连接在管理上被拒绝

Docker 群,无法在服务创建时固定镜像以进行消化