← 문제 라이브러리
Network 입문 NETWORK-004 · 16분

호스트에서는 되는데 Docker 컨테이너 안에서만 사내 DNS 조회 실패

지난주 인프라팀이 사내 DNS 서버를 새 장비로 옮기면서 주소가 10.0.0.2에서 10.0.0.12로 바뀌었고, 옛 서버는 어제 전원을 내렸습니다.

검수된 문제무료
시나리오

지난주 인프라팀이 사내 DNS 서버를 새 장비로 옮기면서 주소가 10.0.0.2에서 10.0.0.12로 바뀌었고, 옛 서버는 어제 전원을 내렸습니다. 오늘 아침부터 빌드 서버에서 도는 컨테이너들이 사내 저장소(git.internal)와 API(api.internal) 이름을 풀지 못해 빌드가 모두 실패합니다. 같은 서버의 호스트에서 nslookup 을 하면 잘 풀립니다. 담당자는 Docker 네트워크가 깨졌다며 Docker를 재설치하려고 합니다. 이 빌드 서버는 몇 년 전에 세팅된 그대로 운영돼 왔습니다.

단서
호스트와 컨테이너 비교
$ resolvectl status | grep 'DNS Servers'
  DNS Servers: 10.0.0.12

$ docker exec builder cat /etc/resolv.conf
nameserver 10.0.0.2

$ docker exec builder nslookup api.internal
;; connection timed out; no servers could be reached
$ docker exec builder nslookup api.internal 10.0.0.12
Name: api.internal  Address: 10.20.1.15
/etc/docker/daemon.json
{
  "dns": ["10.0.0.2"],
  "log-driver": "json-file"
}

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • 호스트와 컨테이너가 쓰는 DNS 서버가 같은지
  • 네트워크 장애와 이름 해석 설정 문제 구분하기
점검 체크리스트
  1. 컨테이너 안 /etc/resolv.conf 의 nameserver
  2. 새 DNS 서버를 직접 지정해 조회해 보기
  3. Docker 데몬 설정(daemon.json)의 dns 항목