为什么在这个Fig / Docker容器中networking如此之慢?

我使用Fig和Docker来包装一个示例Rails应用程序。 目前,它工作正常,数据库和服务器启动。 当我有一个活跃的互联网连接,这一切都完美的作品。 但是,当我没有Internet连接时,需要很长时间才能连接(从请求本地主机页面的浏览器开始20秒)到Rails / WEBrick服务器。

我已经看了日志,没有什么是不寻常的。 集装箱接收初始连接花费很长时间,而且传输数据的时间也很长。

好的,我testing了一下,这是因为DNSparsing。 当你“禁用”典型的Google DNS,而使用本地主机,延迟消失。 这可能是因为如果不这样做,Docker认为127.0.0.1是需要通过NS查找的地址,并且花费了大量的时间等待响应(可能是因为它通过UDP发送的,所以它会等待更长的时间,因为丢失/丢弃的数据包)。 这也是为什么该请求没有被立即logging下来,因为DNS在networking堆栈中处于较低级别。