2017-10-28 2 views
0

Ich habe ein Bild erstellt: stavalfi/projecty:latest Es ist eine sehr einfache Java-Spring-Anwendung.Ich kann nicht auf die Container eines Service zugreifen

Wenn ich einen Container ohne Schwarm laufen, funktioniert alles einwandfrei:

docker run -d -p 8081:8080 --name container1 stavalfi/projecty:latest 

aus Chrom arbeiten:

http://localhost:8081/ 
http://172.17.0.2:8080/ <<-- the address of the leader (no other nodes in the swarm) 

Wenn ich erstellen einen Dienst mit:

docker service create -p 8080:8080 --name service1 stavalfi/projecty:latest 

docker ps 
    CONTAINER ID  IMAGE      COMMAND     CREATED    STATUS    PORTS     NAMES 
    ab8cb85e9750  stavalfi/projecty:latest "/bin/sh -c '/usr/..." 5 minutes ago  Up 5 minutes  0.0.0.0:8081->8080/tcp container1 
    8928604253ed  stavalfi/projecty:latest "/bin/sh -c '/usr/..." 21 minutes ago  Up 21 minutes  8080/tcp     service1.1.uhpsxn9mke7fkfwpgwke8ugnt 
    e312e148de87  nginx:latest    "nginx -g 'daemon ..." 24 minutes ago  Up 24 minutes  80/tcp     web.1.zfihms3t4cy3h489srbfgrbw3 

ich kann 't ping meinen Container an und ich kann meine App nicht von Chrome aus erreichen:

http://localhost:8080/ <<-- no answer 
http://10.0.2.15:8080/ <<-- response: 
Whitelabel Error Page 

This application has no explicit mapping for /error, so you are seeing this as a fallback. 

Sat Oct 28 18:24:26 UTC 2017 
There was an unexpected error (type=Internal Server Error, status=500). 
8928604253ed: 8928604253ed: Name or service not known 

http://10.0.2.15:8080/error <<-- response: 
Whitelabel Error Page 

This application has no explicit mapping for /error, so you are seeing this as a fallback. 

Sat Oct 28 18:25:34 UTC 2017 
There was an unexpected error (type=None, status=999). 
No message available 

Ich habe auch nginx: neueste Service durch Ausführen von:

docker service create -p 80:80 --name web nginx 

http://10.0.2.15:80/ <<-- working 
http://localhost:80/ <<-- not working 

Die Java-Feder-Boot-Controller-Code:

@RestController 
public class HelloController { 

    @RequestMapping("/") 
    @SneakyThrows 
    public String index() { 
     String hostname = InetAddress.getLocalHost().getHostName(); 
     return "Hostname: "+hostname+ "! Greetings from Spring Boot!"; 
    } 
} 

Fragen:

  1. Wie kann ich auf meinen stavalfi/projecty zugreifen: der neueste Dienst von localhost: 8080 und 10.0.2.15:8080 (der führende ip)?

  2. Wie kann ich auf ngrix-Dienst von localhost: 8080 und nicht nur von 10.0.2.15:8080 (der Führer IP) zugreifen?

Antwort

0

Ich benutzen den folgenden Befehl, um das Protokoll des Laufbehälters (mit stavalfi/projecty: neuestes Bild): drucken

docker logs <docker container name/id> 

ich, dass mein Server seine Host-Namen nicht finden kann, sah so er für jede HTTP-GET-Anforderung zerquetscht. Seltsamerweise wird die Container-ID nicht zur Datei/etc/hosts hinzugefügt, wenn ich einen Dienst ausführe, aber wenn ich einen Container ausführe, wird die containerID zur Datei/etc/hosts hinzugefügt.

Ich werde gerne wissen, warum, wenn jemand weiß.

Verwandte Themen