Bonsoir à tous,

Pour tester et comprendre le fonctionnement des réseaux sur docker, je souhaite utiliser un réseau "backend" et un réseau "frontend".

J'ai déjà créé les deux réseaux avec les commandes :

docker network create --subnet 10.0.50.0/24 --gateway 10.0.50.254 --ip-range 10.0.50.0/27 --opt com.docker.network.bridge.enable_icc=false --opt com.docker.network.bridge.name=back backend
docker network create --subnet 10.0.40.0/24 --gateway 10.0.40.254 --ip-range 10.0.40.0/27 --opt com.docker.network.bridge.enable_icc=false --opt com.docker.network.bridge.name=front frontend

Voici les infos de chaque réseau :
- frontend : https://paste.mondedie.fr/?baa876d6f014821c#BIrKi60Txy6JtuYaU0Q38KdRXhizw9maGv+lvG6/tW4=
- backend : https://paste.mondedie.fr/?4cad64e4fb7d7edb#HJMuZVn+N2aDpkElj/ZhM63AHTguB3Bop/JsqzqYbIk=

Pour faire le test j'utilise 3 images (adminer, mariadb et un reverse proxy nginx).
Voici le "docker-compose.yml" : https://paste.mondedie.fr/?dc7eab4da686a50f#07BFDseBsy/Y7ozz1fktjYac+Chw+JE78MSwKztJr/A=

Pourriez-vous me dire pourquoi à chaque fois que je lance le docker-compose avec la commande que tout le monde connait, il me crée de nouveau réseau nommé "docker_backend" et "docker_frontend" alors que je lui spécifie les réseaux à utiliser.....
Mon docker-compose doit pas être bon je suppose mais je trouve pas le problème.

Auriez-vous une idée s'il vous plait ?
Merci beaucoup

    Rathorian Salut
    Surement ça ne va pas fonctionné mais si tu supprimes juste cest 3 lignes

    networks:
      backend:
      frontend:

      Si tu ne précises rien, il créé des réseaux bridges "de base".

      Si tu veux spécifier des réseaux externes précis, il faut les déclarer sous la forme :

      networks:
        backend:
          external:
            name: backend
        frontend:
          external:
            name: frontend

      Mais je te conseille plutôt de créer un réseau externe frontend sur lequel seront connectés tous les containers web, et de laisser docker gérer le backend par lui même.

      Par exemple :

      networks:
        backend:
        frontend:
          external:
            name: frontend

      Ainsi, chaque docker-compose.yml aura son propre backend. Ils seront donc isolés les uns des autres ce qui rajoutera une couche de sécurité.

      Personnellement, j'ai 2 réseaux externes :
      - Le premier pour le frontend.
      - Le second pour le ldap.

      Le ldap est isolé du front et des autres backends. Seuls les containers en ayant besoin sont connectés à l'un et/ou l'autre des réseaux externes.

      Rathorian ce que je pensais tient regarde

      version: '2.1'
      
      services:
        app:
          image: busybox
          command: ifconfig
          networks:
            app_net:
              ipv4_address: 172.16.238.10
              ipv6_address: 2001:3984:3989::10
      
      networks:
        app_net:
          driver: bridge
          enable_ipv6: true
          ipam:
            driver: default
            config:
            - subnet: 172.16.238.0/24
              gateway: 172.16.238.1
            - subnet: 2001:3984:3989::/64
              gateway: 2001:3984:3989::1

      réseau docker pas trop caler mais au niveau de nginx oui je pense que je pourrais mieux t’aider..mais par teamviever(sera plus facile et rapide)

      • zer a répondu à ça.

        xavier Pour atteindre ce niveau de déclaration du réseau, il faut vraiment avoir des besoins spécifiques en réseau.

        Pour 98% des usages, nul besoin de préciser les adresses ip/gateway... Quand tu créé un réseau, docker gère ça très bien par lui même. un simple docker network create frontend fait le job.

          Super sympa, tu peux passer sur le chat pour que je te donne les infos Teamviewer ?

          zer Je suis assez d'accord avec toi sur le fait que c'est pas forcément utile et que docker gèrent très bien l'adressage IP, etc... mais si on souhaite avoir des IP's spécifiques, juste pour une question de préférence 😉

          Répondre…