Le problème se produit lorsque traefik construit une route vers un service dans un conteneur connecté à différents réseaux. Traefik peux récupérer l'IP du service sur un réseau auquel il n'est pas autorisé. Pour lever toute ambiguïté, lorsque un service est connecté à plusieurs réseaux, il faut définir “traefik.docker.network” dans les labels du service.
Pour vérifier quelle interface réseau Traefik a récupéré:
Ci dessous un exemple de fichier docker-compose
version: "3.3" # Réseaux utilisés par les services de monitoring # networks: # réseaux externes traefik-net: external: true # réseau interne accessible seulement par les services # définis dans ce docker-compose cadvisor-net: services: ... prometheus: image: prom/prometheus:v2.29.0 restart: unless-stopped depends_on: - cadvisor networks: traefik-net: cadvisor-net: ... labels: - "traefik.enable=true" - "traefik.docker.network=traefik-net"
Le service prometheus est connecté au réseau externe traefik-net et au réseau cadvisor-net. Pour éviter toute ambiguïté on indique à Trafik par quelle interface ( parmi les deux réseaux disponibles) il pourra joindre le service (effectuer le routage) grace à la configuration dynamique via le label “traefik.docker.network=traefik-net”.