Resolução lenta de DNS dentro do contêiner docker

Resolução lenta de DNS dentro do contêiner docker

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

informação relacionada