GN⁺: Docker Hub, 4월 1일부터 비인증 사용자 다운로드 1시간당 10회/IP 제한 정책 시행
(docs.docker.com)- 2025년 4월 1일부터 Pro, Team, Business 구독자는 공정 사용 원칙(Fair Use) 내에서 무제한 풀링 가능
- 인증되지 않은 사용자와 Docker Personal 사용자에게는 엄격한 제한이 적용됨
- 비인증 사용자 : 시간당 Pull 10회(IPv4 주소 또는 IPv6 /64 서브넷)
- 무료 계정의 인증 사용자(Personal) : 시간당 Pull 100회
- 공정 사용 (Fair Use)
- Docker Hub는 과도한 데이터 전송, 이미지 풀링 속도, 데이터 저장량을 제한할 수 있음
- 서비스 품질 유지를 위해 과도한 사용을 감지하면 제한을 적용하거나 추가 요금을 부과할 수 있음
남용 제한
- Docker Hub는 애플리케이션과 인프라를 보호하기 위해 남용 제한을 설정함.
- 이 제한은 웹 페이지, API, 이미지 Pulls를 포함한 모든 Hub 요청에 적용됨.
- 제한은 IPv4 주소 또는 IPv6 /64 서브넷당 적용되며, 부하 및 기타 요인에 따라 시간이 지남에 따라 변경되지만, 분당 수천 건의 요청 수준임.
- 남용 제한은 계정 수준에 관계없이 모든 사용자에게 동일하게 적용됨.
- Pull rate 제한과 남용 제한은 오류 코드를 통해 구분할 수 있음. 남용 제한은
429 Too Many Requests
응답을 반환하며, Pull 제한은 문서 링크가 포함된 더 긴 오류 메시지를 반환함.
Hacker News 의견
-
이 스레드에서의 권리 의식이 믿기지 않음. 사람들은 대역폭이 나무에서 자란다고 생각하는 것 같음
- 주거용으로는, 아파트 타워에 살지 않는 한, 학습이나 취미 목적으로 Docker를 사용하는 것은 마케팅 비용으로 볼 수 있음
- 사무실에서 상업적 목적으로 레지스트리를 사용한다면, 의존성을 유지하기 위해 비용을 지불해야 함
- 발전소가 전기를 무료로 제공하지 않는 것처럼, 상업 회사가 컨테이너를 무료로 제공할 것이라고 기대해서는 안 됨
-
oci 이미지의 레이어 기반 캐싱 시스템이 대역폭 효율성이 매우 낮음
- 하위 레이어의 변경이 상위 레이어를 무효화함
- nix나 bazel과 같은 캐싱 전략이 있다면, git SHA를 보내고 이미지를 다른 쪽에서 빌드하는 것이 더 빠를 수 있음
-
OSS 이미지를 호스팅하고 있으며, 변경 사항에 대한 공지가 없음
- 접근이 제한된다면, Docker와 Docker Hub의 확산을 이끈 프로젝트들의 혜택과 동기가 사라질 것임
- 사용자를 알고 그들로부터 가치를 추출하려는 것은 그들의 권리지만, 선의로 보이지 않음
-
Docker 클라이언트에 "기본 레지스트리를 재정의" 옵션을 추가하려는 시도가 있었음
- 업스트림에서 이를 차단함
- 이 작은 기능을 위한 포크가 오래 지연됨
-
Docker에 대해 이해하지 못한 점이 있음
- 기본 이미지는 신뢰할 수 있는 출처로서의 용도가 있음
- PaaS를 사용하는 경우, Docker 이미지를 업로드하고 저장 및 배포할 수 있어야 함
- Docker 이미지를 호스팅하기 위해 비용을 지불해야 하는 이유를 모르겠음
-
개인 및 오픈 소스에 불리함
- Docker Hub에 의존하는 사람들을 위한 몇 가지 해결책 제안
- Google Artifact Registry를 사용하여 풀 스루 미러 설정
- 개인 이미지를 위한 개인 풀 스루 이미지 레지스트리 설정
- Docker에서 IP 허용 목록에 추가
- 투명한 Docker Hub 미러 설정
- Docker Hub에 의존하는 사람들을 위한 몇 가지 해결책 제안
-
GitHub 문화가 CI와 같은 것들로 인해 약간 미쳐버림
- 프로젝트가 서버 비용을 감당할 수 없다면, 로컬 셸 스크립트와 precommit 훅을 사용하는 것이 좋음
-
GitHub Actions에 좋지 않음
- PR이 실패할 수 있으며, 워크플로우에서 Docker 자격 증명을 지원하는 데 어려움이 있음
-
GHA 설정 중 AWS ECR Gallery로 전환함
- 블로그 포스트에서 자세히 설명함
-
네트워크에 설정할 수 있는 솔루션이 있음
- 공공적으로 설정하고 공유할 수도 있음
(변경)
- 비로그인: 10/1h
- 로그인(무료계정) 100/1h
(기존)
- 비로그인: 100/6h
- 로그인(무료계정): 200/6h
개인적인 생각으로는
몇몇 버전에서 도커 설치 과정에서 로그인을 강제하도록 하는 버전도 있었던것으로 기억해서,
도커 계정을 만들도록 유도하는 성격도 있을것 같습니다
지금껏 제한이 없었다는게 더 신기하기는 한데... 그래도 시간당 10회는 너무 적네요.
특히 참조하는 이미지가 10개가 넘어가는 docker-compose 자료들은 인증없이 사용할 수 없게 된다는게 좀 많이 아쉽습니다. (일례로, supabase는 총 12개의 이미지를 참조합니다.)