Networking Docker网桥网络,容器之间的HTTP调用非常慢(Docker升级后)

Networking Docker网桥网络,容器之间的HTTP调用非常慢(Docker升级后),networking,docker,containers,ubuntu-14.04,docker-networking,Networking,Docker,Containers,Ubuntu 14.04,Docker Networking,服务器规格: os: Ubuntu 14.04 docker: 1.10.2 docker-compose: 1.6.0 最近刚从1.9升级到1.10,并添加了docker compose(但尚未使用compose)。在升级之前,速度问题没有出现 此外,Docker配置了我的DNS IP和代理,如“/etc/default/Docker”中所示 DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --dns 138.XX.XX.X" export http_pr

服务器规格:

os:  Ubuntu 14.04
docker: 1.10.2
docker-compose: 1.6.0
最近刚从1.9升级到1.10,并添加了docker compose(但尚未使用compose)。在升级之前,速度问题没有出现

此外,Docker配置了我的DNS IP和代理,如“/etc/default/Docker”中所示

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --dns 138.XX.XX.X"
export http_proxy="http://proxy.myproxy.com:8888/"
(我的ip在那里已经完全拼出来了,只是用X表示疑问)

我有两个容器(container_a,container_b),都运行HTTP服务器(Node.js),两个容器都运行在我通过以下方式创建的网桥网络(--net=mynetwork)上:

docker network create mynetwork
这两个容器使用容器名称作为HTTP调用的“主机”,在彼此之间进行HTTP调用,如下所示:

container_b:3000/someurl
通过docker bridge网络在两个容器之间进行的这些调用需要很长时间(约5秒)才能完成。这些呼叫通常在100毫秒以下运行

当我将这些容器上的网络从--net=mynetwork更改为--net=host并将它们作为--net=host运行,同时修改http调用以使用“localhost”作为主机而不是容器名称,并通过-p标志公开它们的端口时。。。调用在<100ms的预期时间内运行

docker网桥网络似乎导致我在容器之间的调用花费了很长时间


关于我可以在哪里诊断/纠正这个问题,有什么想法吗?

这个问题是对docker 1.10中发布的内部DNS进行更改的结果

有关的更多信息,请参见:

我在守护进程上启用了调试模式,并在发出请求时查看了日志。我可以看到它首先尝试“8.8.8.8”,然后继续“8.8.4.4”,最后是我为主机添加的DNS IP并解析。我猜是我的公司代理导致前两个请求(8.8..)挂起并最终超时,从而导致在正确的IP上解析的速度变慢,这是列表中的第三个

我的解决方案是将我的/etc/default/docker文件中的DNS顺序更改为先拥有我的内部IP

DOCKER_OPTS="--dns 138.XX.XX.X --dns 8.8.8.8 --dns 8.8.4.4 "

这似乎解决了我们的问题,因为它首先将容器之间基于容器名的HTTP请求解析为主机DNS IP。

您在容器中找到该文件了吗?@Notflip
/etc/default/docker
是docker守护进程的配置文件。它位于主机上。