0
votes

Comment accéder au conteneur Docker à l'aide de l'adresse localeHost

J'essaie d'accéder à un conteneur Docker à partir d'un autre conteneur à l'aide de localhost adresse.

Le fichier de composition est assez simple. Les deux ports de conteneurs sont exposés. Il n'y a pas de problèmes lorsque vous construisez.

dans ma machine hôte, je peux exécuter avec succès curl http: // localhost: 8124 / et obtenir une réponse.

Mais à l'intérieur du django_container lorsque vous essayez la même commande que je reçois la connexion refusée erreur.

J'ai essayé de les ajouter dans le même réseau, le résultat toujours pas changement.

Eh bien si j'essaie d'exécuter avec l'adresse IP interne de ce conteneur comme Curl 'http://172.27.0.2:8123/' Je reçois la réponse.

est-ce le comportement par défaut? Comment puis-je atteindre clickhouse_container à l'aide de localhost ? xxx


3 commentaires

Vous trouverez certaines questions similaires. Pouvez-vous montrer comment votre question est différente ou comment d'autres réponses à des questions similaires ne fonctionnaient pas pour vous? Stackoverflow.com/search?q=%5BDocker%5D+LocalHost&Mixed=0


Question similaire / Dupliquer Stackoverflow.com/Questtions/48291342/...


Pourquoi voulez-vous accéder via localhost dans un autre conteneur? Vous devriez simplement utiliser le nom du service au lieu de localhost Clickhouse: 8123


3 Réponses :


0
votes

Alors avec cette ligne ici - "8124: 8123" Vous mappez le port de CLICKOUS CONTACHER vers localhost 8124. Ce qui vous permet d'accéder à Clickhouse à partir de localhost au port 8124.

si Vous souhaitez appuyer sur le conteneur Clickhouse à partir du réseau DockerHost, vous devez utiliser le nom d'hôte pour le conteneur. C'est ce que j'aime faire: xxx

Si vous apportez les modifications que j'ai apportées ci-dessus, vous devriez accéder à Clickhouse depuis le conteneur Django comme celui-ci Curl http: // Clickhouse: 8123 .


0 commentaires

1
votes

Comme dans la réponse de @Billy Ferguson, vous pouvez visiter utiliser localhost code> dans la machine hôte Juste parce que: Vous définissez un mappage de port à la route localhost: 8124 code> sur Clickhouse : 8123 code>.

Mais quand d'un autre conteneur (Django), vous ne pouvez pas le faire. Mais si vous insistez, il y a une solution de contournement laid: partager l'espace de noms de réseau de l'hôte avec Network_Mode code>, mais avec ce conteneur Django partagera tout le réseau d'hôte. P>

services:
  django:
    hostname: djano
    container_name: django
    build: ./django
    ports:
       - "8007:8000"
    links:
       - clickhouse:clickhouse
    volumes:
      - ./django:/usr/src/run
    command: bash /usr/src/run/run.sh
    network_mode: "host"


0 commentaires

0
votes

Cela dépend de paramètres config.xml. Si dans config.xml 0.0.0.0 Vous pouvez utiliser Clickhouse-Client -H Your_IP --port 9001


0 commentaires