2016-04-24 10 views
6

Mam kontener dokera, który obsługuje api internetowe napisane w Nancy. Oto wyjątek, który pojawia się po wniosek internetowa jest wykonana, gdy pojemnik jest najpierw wystrzelił w górę:Docker nancy - bez trasy do hosta

4/22/2016 2:40:50 PM at API.SearchModule+<SearchModule>c__AnonStorey0.<>m__0 (System.Object _) <0x41380aa0 + 0x00850> in <filename unknown>:0 
    4/22/2016 2:40:50 PM at (wrapper dynamic-method) System.Object:CallSite.Target (System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Func`2<object, object>,object) 
    4/22/2016 2:40:50 PM at Nancy.Routing.Route+<>c__DisplayClass4.<Wrap>b__3 (System.Object parameters, CancellationToken context) <0x4133d350 + 0x00166> in <filename unknown>:0 
    4/22/2016 2:40:50 PM2016-04-22 13:40:50,177 ERROR: System.Net.WebException: Error: ConnectFailure (No route to host) ---> System.Net.Sockets.SocketException: No route to host 
    4/22/2016 2:40:50 PM at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) <0x41374320 + 0x001b8> in <filename unknown>:0 
    4/22/2016 2:40:50 PM at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) <0x41372b50 + 0x00609> in <filename unknown>:0 

Zapytania aplikacji elasticsearch gdy żądanie internetowa jest wykonana, początkowo myślałem, że to wysadzenie ponieważ nie można znajdź elastyczny (inny kontener dokowy), jednak nie wydaje się, że to jest lokalnie, jeśli zatrzymam elastyczne, api będzie nadal obsługiwać żądania, chociaż będzie zgłaszał wyjątki. Po przywróceniu elastyczności w trybie online api nieprzerwanie obsługuje żądania bez wyjątków.

Dziwaczne jest to, że jeśli kontener w doku jest ponownie uruchamiany, żądania sieciowe w stosunku do api kończą się pomyślnie.

Czy mogę mimo to replikować ten problem lokalnie, aby spróbować rozwiązać ten problem? Pomyślałem, że jeśli uruchomię go lokalnie z elastycznym trybem offline, dostanę ten sam błąd, ale wydaje mi się, że nie jest to przypadek, który powoduje, że jest to problem z łącznością sieciową.

Jak myślicie, co to może być?

+0

Czy używasz funkcji linków dookiennych do łączenia aplikacji i kontenera elasticsearch? Jeśli tak, w jaki sposób łączysz się z elastycznym za pomocą env vars lub nazwy hosta? – jazgot

+0

Jaką wersję okna dokowanego używasz? Na którym komputerze? – VonC

+0

Treść pliku komponowania (jeśli jest używany) i polecenia, których używasz do uruchamiania kontenerów. – johnharris85

Odpowiedz

1

To jest problem z DNS. Twój kontener dokowania nie może rozpoznać adresu IP podanego adresu URL (hosta).

Zapoznaj się z opcją --dns (https://docs.docker.com/engine/reference/run/#network-settings) lub zmień plik resolv.conf w swoim obrazie/pojemniku dokowania.

+0

Dziękujemy, dlaczego działa po ponownym uruchomieniu, jeśli jest to problem z DNS? –

Powiązane problemy