Docker 미러 속도 테스트 및 설정 생성기
Docker Registry V2 pull 가능 여부를 실제로 검증하고 현재 네트워크 지연 시간 순으로 정렬해 바로 쓸 수 있는 설정을 생성합니다.
내 미러 임시 추가
호스트명만 입력할 수 있습니다(포트 가능). 저장되지 않으며 1회 최대 3개입니다. 내부망 스캐너로 악용되지 않도록 사설 주소로 해석되는 호스트명은 거부합니다.
이번 무료 테스트에서는 사용자 미러를 최대 3개 추가할 수 있습니다. 17NAS를 후원하면 Docker 도구의 지속적인 유지 관리와 개선에 도움이 됩니다.바로 사용할 수 있는 미러
이 미러들은 살아 있습니다. docker login이 먼저 필요한 것, 지금 제한이 걸린 것, 저희 프로브 노드를 지역으로 제한하는 것이 섞여 있습니다. 아래 자동 생성 설정에는 포함되지 않지만 사용자의 네트워크에서는 잘 동작할 수 있습니다.
호스트명이 해석·연결되지 않거나, 연결은 되지만 매니페스트 대신 웹 페이지를 돌려주는 경우입니다. 후자가 함정인데, 브라우저에서는 멀쩡해 보여도 docker pull은 반드시 실패합니다. 조용히 지우지 않고 여기에 그대로 남겨 둡니다.
설정 자동 생성
/etc/docker/daemon.json
- 내용을 다음 파일에 저장:
/etc/docker/daemon.json - Docker 서비스를 재시작:
sudo systemctl restart docker - 적용 여부 확인:
docker info | grep -i registry
- 디렉터리 생성:
sudo mkdir -p /etc/containerd/certs.d/docker.io - 위 내용을 해당 디렉터리에 다음 이름으로 저장:
hosts.toml - containerd 재시작:
sudo systemctl restart containerd
패널이 한 줄에 하나의 미러 주소를 입력하는 형식을 지원한다면 위의 1Panel / DPanel 탭으로 전환해 이번 테스트로 생성된 목록을 복사하세요.
검사는 두 갈래입니다. 프로토콜 검증은 17NAS 프로브 노드에서 수행합니다. 먼저 /v2/를 요청하고, 401 + WWW-Authenticate: Bearer가 오면 Docker 표준 절차대로 익명 토큰을 받은 뒤 그 토큰으로 library/alpine:latest의 매니페스트를 가져오고, 마지막으로 응답이 정말 매니페스트인지(Docker-Content-Digest 헤더와 미디어 타입으로) 확인합니다. 지연 시간은 사용자의 브라우저가 각 /v2/를 세 번 호출해 중앙값을 취합니다. 이것이 실제 체감 속도이므로 정렬과 추천은 이 값을 따릅니다.
여섯 가지 상태의 의미
- 바로 사용 가능 — 익명으로 실제 매니페스트를 받았습니다. 설정에 넣기만 하면 됩니다.
- 로그인 필요 — 미러는 살아 있지만 먼저
docker login이 필요합니다. 클라우드 사업자의 전용 가속 미러는 대부분 여기에 해당합니다. - 요청 제한됨 — 짧은 시간에 요청이 많아 차단되었습니다(HTTP 429). 일시적이니 잠시 후 다시 시도하세요.
- 접근 제한 — 미러가 저희 프로브 노드를 명시적으로 거부했습니다(HTTP 403). 캠퍼스망·사내망·지역 제한 미러에서 흔하며, 해당 네트워크에서는 정상 동작할 수 있습니다.
- 레지스트리 아님 — 연결은 되지만 웹 페이지를 돌려주거나, 이미지가 없거나, 엉뚱한 곳으로 리다이렉트합니다. HTTP 상태 코드만 보는 도구는 이런 것을 "사용 가능"으로 판정하지만,
daemon.json에 넣으면docker pull은 반드시 실패합니다. - 연결 불가 — 호스트명의 DNS 레코드가 없거나 연결·TLS 핸드셰이크가 실패합니다. 공개 미러는 서비스를 접을 때 DNS부터 내리는 경우가 많으니 이 그룹은 즐겨찾기에서 지워도 됩니다.
로그인이 필요한 미러 설정법
먼저 docker login <미러 호스트명>으로 제공처가 준 자격 증명을 입력하세요. 인증 정보는 ~/.docker/config.json에 저장됩니다. 그다음 호스트명을 registry-mirrors에 직접 추가하면 됩니다. 이 파일의 자격 증명은 암호화가 아니라 base64 인코딩일 뿐이니, 백업과 함께 공개 저장소에 올리지 마세요.
docker pull의 실제 대역폭은 아닙니다.