2016-09-09 1 views
0

J'ai plusieurs conteneurs docker dans le même réseau. J'essaie d'utiliser curl sur containerA pour obtenir le résultat d'une API sur le conteneur test01.docker.Conteneurs Docker: boucle entre les conteneurs ne fonctionne pas

J'exécuter cette commande sur le récipient A:

curl -s test-01.docker:8031/app?status -v 

La sortie est la suivante:

* Hostname was NOT found in DNS cache 
* Trying 172.19.0.24... 
* connect to 172.19.0.24 port 8031 failed: Connection refused 
* Failed to connect to test-01.docker port 8031: Connection refused 
* Closing connection 0 

Lorsque je tente de ping test01.docker de containerA en utilisant la commande suivante:

ping test-01.docker 

Cela a réussi.

Lorsque je fais docker ps, il montre les informations suivantes. Dans mon

43823212be7e  mytestimage  "/docker-entrypoint.s" 53 seconds ago  Up 47 seconds  22/tcp, 2812/tcp, 5060-5061/tcp, 6970-6971/tcp, 8002/tcp, 8030-8031/tcp, 8033/tcp, 8071/tcp, 8888/tcp, 9020-9023/tcp containerA 

Ceci montre que le port 8031 ​​est exposé. Je suis incapable de comprendre pourquoi curl échoue sur ce point. Quand je lance la commande suivante sur le test-01.docker, il me donne une sortie correcte:

curl -s localhost:8031/app?status 

Je ne sais pas pourquoi sa ne fonctionne pas d'autres conteneurs dans un même réseau. Dites-moi s'il me manque quelque chose.

Mise à jour: Mon fichier docker-Compose ressemble à ceci:

version: '2' 

    services: 
    test-01.docker: 
     image: ############## 
     expose: 
     - 22 
     - 2812 
     - 8031 
     hostname: test-01 
     domainname: docker 
+0

Tout simplement parce que le réservoir de docker est * pas * en fait l'écoute sur le port 8031 ​​sur votre réseau de docker interne. Le port 8031 ​​est exposé à votre machine hôte, via une interface différente de celle utilisée par les conteneurs docker pour communiquer entre eux. – ffledgling

+0

Êtes-vous capable de partager Dockerfiles/docker-compose.yml? – johnharris85

+0

@ffledgling Comment rendre le port 8031 ​​exposé à ma machine hôte via la même interface que celle utilisée par les conteneurs docker? –

Répondre

0

Il semble que l'application en cours d'exécution à l'intérieur test 01.docker écouter sur une 127.0.0.1, donc il ne peut pas être accessible à tout d'autres programmes en dehors de ce conteneur

laisser votre application (à l'intérieur de test 01.docker) écouter sur l'adresse 0.0.0.0 et essayez à nouveau

+0

vous avez raison. C'est le problème. comment puis-je le changer pour écouter sur 0.0.0.0 au lieu de 127.0.0.1? –

+0

ce n'est pas l'affaire de docker, je pense que j'ai besoin de savoir ce que l'application est avant de vous dire comment – Choldrim