não é possível usar a ponte definida pelo usuário no arquivo yaml de composição de enxame
Eu aprendi comdocumentação do docker que não posso usar o DNS do docker para encontrar contêineres usando seus nomes de host sem utilizar a rede de ponte definida pelo usuário. Eu criei um usando o comando:
docker network create --driver=overlay --subnet=172.22.0.0/16 --gateway=172.22.0.1 user_defined_overlay
e tentou implantar um contêiner que o usa. O arquivo de composição se parece com:
version: "3.0"
services:
web1:
image: "test"
ports:
- "12023:22"
hostname: "mytest-web1"
networks:
- test
web2:
image: "test"
ports:
- "12024:22"
hostname: "mytest-web2"
networks:
- test
networks:
test:
external:
name: user_defined_overlay
minha versão do docker é:Docker version 17.06.2-ce, build cec0b72
e recebi o seguinte erro ao tentar implantar a pilha:
network "user_defined_bridge" is declared as external, but it is not in the right scope: "local" instead of "swarm"
Consegui criar uma rede de sobreposição e defini-la no arquivo de composição. que funcionou bem, mas não para bridge. resultado da rede docker sl:
NETWORK ID NAME DRIVER SCOPE
cd6c1e05fca1 bridge bridge local
f0df22fb157a docker_gwbridge bridge local
786416ba8d7f host host local
cuhjxyi98x15 ingress overlay swarm
531b858419ba none null local
15f7e38081eb user_defined_overlay overlay swarm
ATUALIZAR
Tentei criar dois contêineres em execução em dois nós de enxame diferentes (o primeiro contêiner é executado no gerenciador enquanto o segundo é executado no nó do trabalhador) e especifiquei a rede de sobreposição definida pelo usuário, conforme mostrado na pilha acima. Tentei fazer ping do contêiner mytest-web2 de dentro do contêiner mytest-web1 usando o nome do host, mas obtiveunknown host mytest-web2