도커 컨테이너 내부의 느린 DNS 확인

도커 컨테이너 내부의 느린 DNS 확인

도커 컨테이너 내부에서 DNS 확인이 매우 느린 문제가 발생했습니다. 'google.com'에 대한 간단한 GET은 완료하는 데 약 4초가 걸리는 반면 호스트의 동일한 요청은 0.052ms가 걸립니다. 또한 요청을 IP 주소로 보내면 요청이 완벽하게 작동하므로 DNS 문제를 제안했습니다. 나는 그들 중 대부분이 내가 한 DNS 서버 설정에 관한 답변을 검색했지만 /etc/docker/daemon.json 그것은 내 문제에 도움이 되지 않았습니다. 서버는 Ubuntu 16.04에서 실행됩니다. 동일한 구성을 실행하는 개발 서버도 있지만 잘 작동합니다.

주인:

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

컨테이너:

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

데몬.json:

{
    "dns": ["188.93.16.19", "188.93.17.19", "8.8.8.8", "8.8.8.4"]
}

답변1

daemon.json에서 8.8.8.8을 제외한 모든 DNS 서버를 제거하여 문제를 해결했습니다. 내 경우에는 도메인을 빠르게 확인하는 유일한 서버입니다. 를 통해 다양한 서버를 테스트했습니다 docker run --dns=<dns server> <image name> curl -g 'google.com'.

답변2

docker-compose를 사용하는 동안 이 문제가 발생했습니다. 역시 DNS 문제였습니다. 나는 다음을 추가했다:

services: 
  my_app:
    dns:
      - 8.8.8.8
      - 4.4.4.4

내 docker-compose.yml로 이동하여 성능 문제를 해결했습니다.

답변3

설명된 대로 브리지 MAC 주소 문제와 관련이 있다고 생각합니다.여기. MAC 주소가 낮은 더미 인터페이스를 브리지의 슬레이브로 추가해야 합니다.

관련 정보