2017-07-06 5 views
0

Ich versuche docker-compose zu verwenden, um eine App auszuführen, die aus zwei Containern besteht: akka app und postgresql. Hier ist yaml Datei:Docker: Verbindung zum Container vom Host aus nicht möglich

version: "3" 
services: 
    api: 
    image: akka-app:latest 
    ports: 
     - "9000:5000" 
    db: 
    image: postgres-db:latest 

Nach dem docker-compose up Befehl, den ich sehe, dass Container sind und laufen mit docker ps Befehl:

CONTAINER ID  IMAGE        COMMAND     CREATED    STATUS    PORTS     NAMES 
65326e5a9677  akka-app:latest      "java -cp /..." 40 minutes ago  Up 23 seconds  0.0.0.0:9000->5000/tcp samplecompose_api_1 
1f86273c4f9a  postgres-db:latest     "docker-ent..." 19 hours ago  Up 23 seconds  5432/tcp     samplecompose_db_1 

Aber wenn ich versuche, den akka-App für den Zugriff auf aus dem Host über die GET-Anfrage an 0.0.0.0:9000/status oder localhost:9000/status Ich bekomme zurück "weigerte Verbindung" Fehler im Postboten.

Zusätzliche Informationen:

  • Docker Version 17.06.0-ce, Version
  • 1.14.0, bauen c7bdf9e MacOS Sierra 10.12.5

02c1d87

  • Docker-compose bauen Netzwerkeinstellungen des akka-app-Containers:

    "NetworkSettings": { 
        "Bridge": "", 
        "SandboxID": "5b5b322ffb0fb881317f8cb4e69b8fd887566b8c5b73940174aabace35d816f8", 
        "HairpinMode": false, 
        "LinkLocalIPv6Address": "", 
        "LinkLocalIPv6PrefixLen": 0, 
        "Ports": { 
         "5000/tcp": [ 
          { 
           "HostIp": "0.0.0.0", 
           "HostPort": "9000" 
          } 
         ] 
        }, 
        "SandboxKey": "/var/run/docker/netns/5b5b322ffb0f", 
        "SecondaryIPAddresses": null, 
        "SecondaryIPv6Addresses": null, 
        "EndpointID": "", 
        "Gateway": "", 
        "GlobalIPv6Address": "", 
        "GlobalIPv6PrefixLen": 0, 
        "IPAddress": "", 
        "IPPrefixLen": 0, 
        "IPv6Gateway": "", 
        "MacAddress": "", 
        "Networks": { 
         "pinpointcompose_default": { 
          "IPAMConfig": null, 
          "Links": null, 
          "Aliases": [ 
           "api", 
           "65326e5a9677" 
          ], 
          "NetworkID": "925c8379c6d5b334177d7d198d1d38e29983903474183bee5734df9d30ab9810", 
          "EndpointID": "c7c37f545b00c6a19863315858e93a79f10b54b5675dc2cb8704d2f2f9b2bb1c", 
          "Gateway": "172.18.0.1", 
          "IPAddress": "172.18.0.2", 
          "IPPrefixLen": 16, 
          "IPv6Gateway": "", 
          "GlobalIPv6Address": "", 
          "GlobalIPv6PrefixLen": 0, 
          "MacAddress": "02:42:ac:12:00:02" 
         } 
        } 
    } 
    

    UPDATE:

    Docker-compose Ausgang:

    docker-compose up 
    Starting samplecompose_api_1 ... 
    Starting samplecompose_api_1 
    Starting samplecompose_db_1 ... 
    Starting samplecompose_api_1 ... done 
    Attaching to samplecompose_db_1, samplecompose_api_1 
    db_1 | LOG: database system was shut down at 2017-07-06 08:54:56 UTC 
    db_1 | LOG: MultiXact member wraparound protections are now enabled 
    api_1 | 09:04:26.030 [default-akka.actor.default-dispatcher-3] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started 
    api_1 | 09:04:27.472 [default-akka.actor.default-dispatcher-4] INFO sample-service - Bound to /0.0.0.0:5000 
    
  • +0

    Können Sie auch Docker-Compose-Protokolle einfügen? – dgulabs

    +0

    @ dgulabs ja. Nur 3 Minuten. Ich werde die Logs zur Hauptfrage als Update hinzufügen :) –

    +1

    Ist wget localhost: 9000 scheitert auch? Könnten Sie versuchen, den Container außerhalb von docker-compose über docker run auszuführen und über "-p IP: host_port: container_port" an eine bestimmte Adresse zu binden? – dgulabs

    Antwort

    0

    Das Problem war, in einem alten VirtualBox installiert, die, wenn sie auf meinem Laptop kennt. So, während es installiert war ich nicht laufen Docker-Container über localhost zugreifen kann ... können Sie read more dazu auf offizielle Docker Website

    Nachdem ich die VirtualBox aus dem Laptop deinstalliert, dann die Docker App neu gestartet und neu aufgelegt, die Terminal-Sitzungen Es war unrealistisch, localhost für den Zugriff auf die Container zu verwenden.

    Anstelle des localhost habe ich die IP verwendet, die ich von docker-machine ip default bekommen habe. Aber das ist nicht der gute Weg.

    So stellen Sie noch einmal sicher, dass Sie alle Anforderungen erfüllen.

    Verwandte Themen