
Eu tive um problema de resolução de DNS muito lenta dentro do contêiner do docker. O simples GET para 'google.com' leva cerca de 4s para terminar, enquanto a mesma solicitação no host leva 0,052 ms. A solicitação também funciona perfeitamente se eu enviá-la para um endereço IP, por isso sugeri problema de DNS. Procurei uma resposta que a maioria delas tratava de configurar servidores DNS, o /etc/docker/daemon.json
que fiz, mas isso não ajudou no meu problema. O servidor é executado no Ubuntu 16.04. Eu também tenho um servidor de desenvolvimento que executa as mesmas configurações, mas funciona bem.
Hospedar:
time curl -g 'google.com'
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
real 0m0.052s
user 0m0.004s
sys 0m0.004s
time nslookup google.com
Server: 188.93.16.19
Address: 188.93.16.19#53
Non-authoritative answer:
Name: google.com
Address: 173.194.73.102
Name: google.com
Address: 173.194.73.139
Name: google.com
Address: 173.194.73.100
Name: google.com
Address: 173.194.73.113
Name: google.com
Address: 173.194.73.138
Name: google.com
Address: 173.194.73.101
real 0m0.013s
user 0m0.004s
sys 0m0.004s
Recipiente:
time curl -g https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>
real 0m4.592s
user 0m0.004s
sys 0m0.012s
time nslookup google.com
Server: 127.0.0.11
Address: 127.0.0.11#53
Non-authoritative answer:
Name: google.com
Address: 64.233.165.139
Name: google.com
Address: 64.233.165.101
Name: google.com
Address: 64.233.165.102
Name: google.com
Address: 64.233.165.113
Name: google.com
Address: 64.233.165.100
Name: google.com
Address: 64.233.165.138
real 0m4.029s
user 0m0.008s
sys 0m0.004s
daemon.json:
{
"dns": ["188.93.16.19", "188.93.17.19", "8.8.8.8", "8.8.8.4"]
}
Responder1
Resolvi o problema removendo todos os servidores DNS, exceto 8.8.8.8, do daemon.json. Este é o único servidor que resolve o domínio rapidamente no meu caso. Servidores diferentes testados via docker run --dns=<dns server> <image name> curl -g 'google.com'
.
Responder2
Eu estava tendo esse problema ao usar o docker-compose. Foi um problema de DNS também. Eu adicionei:
services:
my_app:
dns:
- 8.8.8.8
- 4.4.4.4
Para meu docker-compose.yml e corrigiu o problema de desempenho.
Responder3
Acredito que esteja relacionado ao problema do endereço MAC da ponte, conforme descritoaqui. Você precisa adicionar uma interface fictícia com endereço MAC baixo como escravo da ponte