Docker nancy – 没有路由到主机

我有一个docker容器,托pipe在南希写的网页api。 以下是在容器首次启动时发出Web请求之后发生的exception:

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 

该应用程序询问弹性search时,一个Web请求,最初我以为它是炸毁,因为它不能find弹性(另一个docker集装箱),但是这似乎并不是本地的情况下,如果我停止弹性的API将继续提供请求,尽pipe它会抛出exception。 一旦弹性恢复在线,api将继续为这个请求提供服务,没有例外。

奇怪的是,如果docker集装箱再次重新启动,对api的web请求在查询弹性方面是成功的。

无论如何,我可以在本地复制这个问题,所以我可以尝试修复? 我曾经想过,如果我用弹性离线在本地运行它,我会得到同样的错误,但是这似乎并不是这种情况,这使得我认为这是某种networking连接问题。

你们认为可能是什么?

这是一个DNS问题。 您的docker工具容器无法parsing提供的URL(主机)的IP地址。

看一下--dns选项( https://docs.docker.com/engine/reference/run/#network-settings )或者修改--dns镜像/容器内的resolv.conf文件。

Interesting Posts