docker堆栈部署不使用覆盖networking创build
我使用这个命令创build了一个覆盖networking:
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
如果我使用dockernetworkingls检查networking,我发现新名称为test_test的覆盖networking被创build,容器使用这个networking而不是已经创build的networking。 这是一个预期的行为? 我希望堆栈使用我手动创build的networking,而不是创build新的networking,因为我想控制覆盖networking使用的IP CIDR范围。 我怎么能做到这一点?
要使用现有networking,请将其定义为“外部”:
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