docker 堆栈部署不使用创建的覆盖网络
docker stack deploy doesn't use overlay network created
我使用这个命令创建了一个覆盖网络:
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 范围。我怎样才能做到这一点?
要使用现有网络,请将其定义为 "external":
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 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 范围。我怎样才能做到这一点?
要使用现有网络,请将其定义为 "external":
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