J'ai appris de docker documentation que je ne peux pas utiliser docker DNS pour trouver des conteneurs en utilisant leurs noms d'hôte sans utiliser le pont réseau défini par l'utilisateur. J'ai créé un en utilisant la commande:ne peut pas utiliser le pont défini par l'utilisateur dans swarm composer le fichier yaml
docker network create --driver=overlay --subnet=172.22.0.0/16 --gateway=172.22.0.1 user_defined_overlay
et essayé de déployer un conteneur qui l'utilise. composer fichier ressemble à:
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
ma version docker est: Docker version 17.06.2-ce, build cec0b72
et j'ai eu l'erreur suivante lorsque j'ai essayé de déployer la pile:
network "user_defined_bridge" is declared as external, but it is not in the right scope: "local" instead of "swarm"
j'ai pu créer un réseau de recouvrement et définir dans le fichier de composition. Cela a bien fonctionné, mais pas pour le pont. résultat de réseau docker ls:
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
UPDATE
I a essayé de créer deux récipients fonctionnant sur deux noeuds d'essaims différents (premier récipient fonctionne sur gestionnaire tandis que le second fonctionne sur le noeud de travail) et I spécifié à l'utilisateur réseau de superposition défini comme indiqué dans la pile ci-dessus. J'ai essayé d'envoyer un ping au conteneur mytest-web2 à partir du conteneur mytest-web1 en utilisant le nom d'hôte mais j'ai obtenu unknown host mytest-web2
Si vous utilisez la pile docker, le réseau doit être superposé. alors quel est le problème avec ce –
Je ne peux pas spécifier le réseau de pont dans la pile? seulement superposer? – tkyass