Docker 이미지 Pull 실패 원인 및 해결 방법 정리

2026. 6. 26. 17:01·인프라/CI&CD
728x90
반응형

문제 상황

Docker Compose 빌드 중 아래와 같은 오류가 발생했다.

failed to resolve source metadata for docker.io/library/eclipse-temurin:25-jre
failed to do request: Head "https://registry-1.docker.io/v2/library/eclipse-temurin/manifests/25-jre":
dial tcp: lookup registry-1.docker.io on 127.0.0.53:53: server misbehaving

또는 다음과 같은 오류가 발생했다.

failed to resolve reference "docker.io/library/eclipse-temurin:25-jre":
lookup registry-1.docker.io on 127.0.0.53:53: server misbehaving

원인

Dockerfile이나 eclipse-temurin 이미지 문제가 아니었다.

핵심 원인은 Ubuntu의 기본 DNS(systemd-resolved / 127.0.0.53)가 Docker Hub 도메인인 registry-1.docker.io를 정상적으로 조회하지 못한 것이었다.

확인 결과 기본 DNS 조회는 실패했다.

dig registry-1.docker.io

결과:

status: REFUSED
SERVER: 127.0.0.53#53

반면 Google DNS와 Cloudflare DNS로 직접 조회하면 정상적으로 응답했다.

dig @8.8.8.8 registry-1.docker.io
dig @1.1.1.1 registry-1.docker.io

결과:

status: NOERROR
ANSWER SECTION:
registry-1.docker.io. IN A ...

즉, 인터넷 연결이나 Docker Hub 자체의 문제가 아니라 로컬 DNS 설정 문제였다.

해결 방법

1. 현재 DNS 상태 확인

resolvectl status

기본 DNS가 127.0.0.53을 통해 동작하고 있었고, 해당 DNS에서 Docker Hub 주소 조회가 실패하고 있었다.

2. 외부 DNS로 정상 조회되는지 확인

dig @8.8.8.8 registry-1.docker.io
dig @1.1.1.1 registry-1.docker.io

두 명령에서 status: NOERROR와 ANSWER SECTION이 나오면 외부 DNS는 정상이다.

3. systemd-resolved DNS 설정 수정

/etc/systemd/resolved.conf 파일을 수정한다.

sudo nano /etc/systemd/resolved.conf

아래 내용을 설정한다.

[Resolve]
DNS=8.8.8.8 1.1.1.1
FallbackDNS=8.8.4.4 1.0.0.1
DNSStubListener=yes

4. DNS 서비스 및 Docker 재시작

sudo systemctl restart systemd-resolved
sudo resolvectl flush-caches
sudo systemctl restart docker

5. DNS 정상 여부 재확인

dig registry-1.docker.io

정상이라면 아래처럼 나온다.

status: NOERROR
ANSWER SECTION:
registry-1.docker.io. IN A ...

6. Docker Pull 또는 Compose 빌드 재시도

docker pull eclipse-temurin:25-jre

또는

docker compose up -d --build

참고 사항

/etc/docker/daemon.json에 아래처럼 DNS를 설정하는 방법도 시도할 수 있다.

{
  "dns": ["8.8.8.8", "1.1.1.1"]
}

하지만 이 설정은 주로 컨테이너 내부 DNS에 적용된다.
이번 문제처럼 docker pull이나 빌드 메타데이터 조회 단계에서 Docker daemon이 여전히 127.0.0.53을 사용하는 경우에는 OS의 DNS 설정을 먼저 수정해야 한다.

최종 정리

이번 문제의 핵심은 다음과 같다.

dig registry-1.docker.io          → 실패
dig @8.8.8.8 registry-1.docker.io → 성공
dig @1.1.1.1 registry-1.docker.io → 성공
docker pull                       → 실패

따라서 원인은 Dockerfile, Java 버전, eclipse-temurin 이미지 태그 문제가 아니라 Ubuntu 로컬 DNS(systemd-resolved) 문제였다.

해결은 OS DNS를 8.8.8.8, 1.1.1.1 등 정상 동작하는 외부 DNS로 변경한 뒤 systemd-resolved와 Docker를 재시작하는 방식으로 진행했다.

728x90
반응형

'인프라 > CI&CD' 카테고리의 다른 글

Ubuntu 26 에 docker 와 docker compose 설치  (0) 2026.06.26
Windows 재부팅 후 WSL/Docker GitLab 컨테이너가 사라졌을 때 복구하는 방법  (0) 2026.06.26
WSL/Docker 환경에서 GitLab CE가 느릴 때 해결하는 방법  (0) 2026.06.26
GitLab에서 빈 프로젝트를 만들고 기존 로컬 프로젝트 Push하기  (0) 2026.06.25
gitlab 프로젝트 권한이 부여되는 범위  (0) 2026.06.25
'인프라/CI&CD' 카테고리의 다른 글
  • Ubuntu 26 에 docker 와 docker compose 설치
  • Windows 재부팅 후 WSL/Docker GitLab 컨테이너가 사라졌을 때 복구하는 방법
  • WSL/Docker 환경에서 GitLab CE가 느릴 때 해결하는 방법
  • GitLab에서 빈 프로젝트를 만들고 기존 로컬 프로젝트 Push하기
nix-be
nix-be
  • nix-be
    NiX
    nix-be
  • 전체
    오늘
    어제
    • 홈
      • 책
        • 오브젝트
      • 성장
        • jpa Querydsl 정리
        • 코딩테스트
        • 스프링 핵심 원리 - 기본편
      • 인프라
        • linux
        • vmware
        • CI&CD
        • 네트워크
        • docker
      • 개발
        • spring boot
        • spring security
        • JPA
        • java
        • thymeleaf
        • 이슈
        • jquery
        • javascript
        • 안드로이드
        • MyBatis
        • git
        • 과제
        • 카프카
      • DB
        • postgreSql
        • mysql
        • redis
      • 잡다한것
        • 프로그램
        • 일상 관련
        • 프로젝트-주차관리
      • 회사
        • 티
        • 피
        • 그린-출입관련
      • 아기
        • 사진
  • 블로그 메뉴

    • 홈
    • 개발
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
nix-be
Docker 이미지 Pull 실패 원인 및 해결 방법 정리
상단으로

티스토리툴바