IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Docker Discussion :

résolution de nom entre 2 containers


Sujet :

Docker

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut résolution de nom entre 2 containers
    Bonjour à tous,
    j'ai une problématique que je n'arrive pas a résoudre.
    J'ai créé 2 container contenant chacun une application indépendante, on va dire A et B.

    L'application A doit communiquer avec l'application B via SOAP. Le prérequis de A est que A et B aient un nom de domaine commun. (exemple : A = glpi.localhost / B = pm.glpi.localhost ).
    DAns la conf de mon app A je dois obligatoirement mettre l'url de B donc http://pm.glpi.localhost
    Je ne trouve pas ce qu'il faut configurer pour que cela fonctionne

    La liaison est ok via les nom des services ou l'IP mais SOAP a cette exigence du nom de domaine.

    Savez vous ce qu'il est possible de faire ?
    Erreur PHP (Je ne pense pas que ca vous aides mais bon):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PHP Warning(2): SoapClient::SoapClient(): I/O warning : failed to load external entity "pm.localhost/sysworkflow/en/glpi_classic/services/wsdl2"
    Extait de mon docker-compose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    php73:
        build: php73
        ports:
          - "9073:80"
        volumes:
          - ./vhosts:/etc/apache2/sites-enabled
          - /home/alex/docker/www:/var/www
        networks:
          mynetwork:
            ipv4_address: 172.20.0.72
        # extra_hosts:
        #   - pm.glpi.localhost: 172.20.40.56
      php56:
        build: php56
        ports:
          - "9056:80"
        volumes:
          - ./vhosts56:/etc/apache2/sites-enabled
          - /home/alex/docker/www:/var/www
        networks:
          mynetwork:
            ipv4_address: 172.20.0.56
    
    networks:
      mynetwork:
        ipam:
          driver: default
          config:
            - subnet: 172.20.0.0/16
    merci d'avance

    PS: Ce n'est pas un problème de code PHP car il fonctionne. Il est utilisé sur des environnements de prod mais pas avec Docker.

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Il faudrait tenter de :

    • passer par un network dédié de type bridge
    • utiliser des container_name
    • considérer ces container_name comme les noms à utiliser pour la résolution DNS
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    Il faudrait tenter de :

    • passer par un network dédié de type bridge
    • utiliser des container_name
    • considérer ces container_name comme les noms à utiliser pour la résolution DNS
    Bonjour Gorgonite,

    merci pour ton retour.
    D'après ce que j'ai compris docker-compose set les container_name avec le nom de service (php73 ou php56 dans mon cas)?
    La résolution de nom avec ces noms fonctionne car pour la config de base de données, je met juste le nom "db"(nom de mon container MySQL) dans la config de l'app A et c'est ok.

    Par contre pour SOAP ca ne l'est pas ...

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 446
    Points : 43 090
    Points
    43 090
    Par défaut
    Mets les infos dans les fichiers /etc/hosts de tes conteneurs respectifs.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Mets les infos dans les fichiers /etc/hosts de tes conteneurs respectifs.
    Bonjour Chrtophe,

    je vais tester ca , meme si il me semble avoir déja essayé.

    En mode bridge mes containers ne se ping plus. C'est normal ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
      php73:
        build: php73
        ports:
          - "9073:80"
        volumes:
          - ./vhosts:/etc/apache2/sites-enabled
          - /home/alex/docker/www:/var/www
        networks:
          - mynetwork
      php56:
        build: php56
        ports:
          - "9056:80"
        volumes:
          - ./vhosts56:/etc/apache2/sites-enabled
          - /home/alex/docker/www:/var/www
        networks:
          - mynetwork
    
    
    networks:
      mynetwork:
        driver: bridge
    EDIT: J'ai du haluciner, même avec mon network mynetwork le ping ne passe pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    networks:
      mynetwork:
        ipam:
          driver: default
          config:
            - subnet: 172.20.0.0/16
    De plus en ajoutant une entrée extra_hosts dans le docker-compose il n'apparait pas dans etc/hosts ... C'est normal ?

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    il y a les déclarations depends_on à gérer
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    il y a le déclaration depends_on à gérer
    Pas mieux... :'(
    J'ai vraiment du mal a comprendre le fonctionnement du réseau. J'arrive a pinger l'exterieur mais pas les container qui sont sur le même network ...

  8. #8
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Exemple de docker-compose.yml
    Code yaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    version: "2.0"
    services:
      m1:
        image: alpine
        networks:
          - mynetwork
      m2:
        image: alpine
        networks:
          - mynetwork
     
    networks:
      mynetwork:
        driver: bridge

    Démarrage
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [gorgonite@localhost network-ping]$ docker-compose run --name m1 m1
    / # 
    [gorgonite@localhost network-ping]$ docker-compose run --name m2 m2
    / #

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [gorgonite@localhost network-ping]$ docker exec -it  m1 /bin/sh
    / # ping m1
    PING m1 (172.18.0.3): 56 data bytes
    64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.030 ms
    64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.048 ms
    ^C
    --- m1 ping statistics ---
    2 packets transmitted, 2 packets received, 0% packet loss
    round-trip min/avg/max = 0.030/0.039/0.048 ms
    / # ping m2
    PING m2 (172.18.0.2): 56 data bytes
    64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.063 ms
    64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.062 ms
    ^C
    --- m2 ping statistics ---
    2 packets transmitted, 2 packets received, 0% packet loss
    round-trip min/avg/max = 0.062/0.062/0.063 ms
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut
    Effectivement cet exemple fonctionne. Mais dans mon cas non :/. Je suis vraiment a cours d'idée la ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    version: '2'
    services:
      db:
        image: mysql:5
        ports:
          - "3307:3306"
        environment:
          MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
          MYSQL_USER: 'root'
        volumes:
          - /home/alex/docker/data/mysqlSf:/var/lib/mysql
        networks:
          - mynetwork
    
      maildev:
        image: djfarrelly/maildev
        ports:
          - "8002:80"
        networks:
          - mynetwork
    
      phpmyadmin:
        image: phpmyadmin/phpmyadmin
        ports:
          - "8080:80"
        depends_on:
          - db
        environment:
          PMA_HOST: db
        networks:
          - mynetwork
    
      php73:
        build: php73
        depends_on:
          - php56
        ports:
          - "9073:80"
        volumes:
          - ./vhosts:/etc/apache2/sites-enabled
          - /home/alex/docker/www:/var/www
        networks:
          - mynetwork
      php56:
        build: php56
        ports:
          - "9056:80"
        volumes:
          - ./vhosts56:/etc/apache2/sites-enabled
          - /home/alex/docker/www:/var/www
        networks:
          - mynetwork
    
    networks:
      mynetwork:
        driver: bridge
    J'accède a tous mes container depuis le navigateur.
    l'app de php73 accède a la bd en tapant "bd" dans la config mais le ping non.
    J'arrive a pinger mon réseau local 192.168.1.0.

    le résultat de network inspect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    [
        {
            "Name": "symfony_mynetwork",
            "Id": "6d2c8cacb0b0986a6d6c8b39488fe7e98455765f5d92bdab60dc9529af838dea",
            "Created": "2020-04-01T23:22:28.956216213+02:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": [
                    {
                        "Subnet": "172.23.0.0/16",
                        "Gateway": "172.23.0.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {
                "1b7b12eb1cc1ea1d7ae31eb0a41d3461151e521eab95cd7ff1b955e08f33287f": {
                    "Name": "symfony_php73_1",
                    "EndpointID": "e71439964c91eea33c68f0074051dd0606ffb65220c6a554df1790f7960c0d97",
                    "MacAddress": "02:42:ac:17:00:05",
                    "IPv4Address": "172.23.0.5/16",
                    "IPv6Address": ""
                },
                "72f1514c12974cc1951212313c71ee4d64448e0d7237d87d7ff227dba175256a": {
                    "Name": "symfony_php56_1",
                    "EndpointID": "25f5ace72646e2ca006bf1ad07072290f23e9d5dff6e31f0fd9f91d2d0d9e9ab",
                    "MacAddress": "02:42:ac:17:00:02",
                    "IPv4Address": "172.23.0.2/16",
                    "IPv6Address": ""
                },
                "9864c30681ec602d360bd3f0afcbf816a9c64f139941997512c45eaa3e883bf6": {
                    "Name": "symfony_db_1",
                    "EndpointID": "9541b72f7069c2ca2b4d8eeadf1c2ded7e5670bad264ed9e58ebaed98618c890",
                    "MacAddress": "02:42:ac:17:00:03",
                    "IPv4Address": "172.23.0.3/16",
                    "IPv6Address": ""
                },
                "af7abb677c6b26f386d4135a5dd1b506b2d5c967ca621e7af5ef7b401c3c498c": {
                    "Name": "symfony_maildev_1",
                    "EndpointID": "c7283414522819e24b89623412843f1c7a690db2a5c1669bb7b985321b19f274",
                    "MacAddress": "02:42:ac:17:00:04",
                    "IPv4Address": "172.23.0.4/16",
                    "IPv6Address": ""
                },
                "e914ce72bcccf86342479ddc4c89e8baab0aaae1b1bf57c8df6d690292fb97d2": {
                    "Name": "symfony_phpmyadmin_1",
                    "EndpointID": "3b284f188dbe11b653c6d87160179d783f7b683c1270c8af5ff2e0989286d813",
                    "MacAddress": "02:42:ac:17:00:06",
                    "IPv4Address": "172.23.0.6/16",
                    "IPv6Address": ""
                }
            },
            "Options": {},
            "Labels": {}
        }
    ]

  10. #10
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    et ping sur "symfony_db_1" ?


    il faut vraiment utiliser les "container_name" afin de forcer cela


    Reprise de mon exemple

    Code yaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    version: "2.0"
    services:
      m1:
        image: alpine
        container_name: m1
        tty: true
        stdin_open: true
        networks:
          mynet:
            ipv4_address: 172.18.0.3
      m2:
        image: alpine
        container_name: m2
        tty: true
        stdin_open: true
        depends_on:
          - m1
        networks:
          mynet:
            ipv4_address: 172.18.0.2
     
    networks:
      mynet:
        ipam:
          driver: default
          config:
            - subnet: "172.18.0.0/24"

    Et en ajoutant dans /etc/hosts de m2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    172.18.0.3    api.localhost
    On arrive à ping api.localhost aussi
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut
    Merci beaucoup !!
    Effectivement en utilisant des container_name ca ping !! nom et IP !!!!!!!!!!!!!!

    il faut toujours arréter sur une bonne note, donc je reprend demain avec la modif du fichier hosts !

    Bonne nuit !

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut
    Bonjour Gorgonite,
    merci pour toute ton aide.
    Tout est ok a présent !

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Résolution de nom et apache
    Par KindPlayer dans le forum Apache
    Réponses: 1
    Dernier message: 17/06/2008, 15h00
  2. Problème de résolution de nom de domaine et IP
    Par berceker united dans le forum IIS
    Réponses: 0
    Dernier message: 21/01/2008, 15h41
  3. résolution de nom
    Par coco-sup dans le forum Oracle
    Réponses: 3
    Dernier message: 28/08/2006, 10h07
  4. Résolution de nom HS
    Par argoet dans le forum Développement
    Réponses: 6
    Dernier message: 01/08/2005, 13h53
  5. [résolution de noms] [réseau] problème fichier hosts
    Par Aldo dans le forum Administration
    Réponses: 2
    Dernier message: 11/04/2005, 21h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo