Docker nancy - 没有路由到主机
问题描述:
我有一个码头容器,托管在南希编写的web api。下面是当容器首次发射了一个web请求之后出现异常:Docker nancy - 没有路由到主机
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
该应用程序查询elasticsearch当Web请求时,起初我还以为是吹起来,因为它不能找到弹性(另一个码头集装箱),但是,如果我停止弹性,这似乎不是本地的情况下,API将继续提供请求,尽管它会抛出异常。一旦弹性恢复在线,api将继续为这次的请求提供服务,无一例外。
奇怪的是,如果码头容器重新启动,对api的web请求在查询弹性时成功。
有无论如何我可以在本地复制这个问题,所以我可以尝试修复?我曾想过,如果我使用弹性离线在本地运行它,我会得到相同的错误,但是这似乎并不是这种情况,这使得我认为这是某种网络连接问题。
你们认为这可能是什么?
答
这是一个DNS问题。您的码头工具容器无法解析提供的URL(主机)的IP地址。
查看--dns
选项(https://docs.docker.com/engine/reference/run/#network-settings)或修改docker映像/容器中的resolv.conf
文件。
+0
谢谢,为什么它在DNS重启时重启? –
您是否使用泊坞窗链接功能来链接应用程序和elasticsearch容器?如果是的话,你如何通过环境变量或主机名连接到弹性? – jazgot
你使用的是什么版本的码头?在哪个主机上? – VonC
撰写文件的内容(如果使用的话)以及您用来运行容器的命令。 – johnharris85