在Docker容器中访问和主机同一局域网的其他服务器,访问速度为什么特别慢?

嗨各位朋友,这个问题我已经肝了好几天无果了:

我Mac上的Docker中运行了一个PHP容器,用的是官方的php:5.6-fpm这个镜像, IP地址是172.17.0.4

另有一个提供接口的服务器,在内网中,IP地址是192.168.1.249。

为了在容器中能访问到接口,我在PHP容器中添加了一个hosts来访问接口服务器:

# docker exec -it php56 bash
# cat /etc/hosts
...    
172.17.0.4    589ce93fa246
192.168.1.249 api.test.com

访问接口的代码如下:

curl('http://api.test.com/articles');   // curl是自定义函数且无问题。

然而问题来了, 这个接口虽然能访问通,但是需要至少5秒才能返回结果。

接口本身是没有问题的, 在主机中使用浏览器和postman访问都能正常访问,速度是几十毫秒左右。
调用的代码应该也没有问题,在主机中用cli模式运行这个curl函数也能正常访问。

我觉得应该是dns方面的问题,但我并不懂dns,希望各位能指点下,非常感谢。

阅读 4.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题