CI를 돌릴 때 아래 에러가 뜨면서 실패할 수 있다.
Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
위 에러는 docker hub에서 이미지를 직접 pulling 하는 경우가 지나치게 많으면 발생하는 에러이다.
실제로 2020년 말부터 무료플랜일 경우 최대 6시간에 200회, 유료플랜일 경우 최대 24시간에 50,000회 제한이 생겼다고 한다.
CI에서 docker image를 hub에서 pulling 하고 빌드하는 과정이 너무 빈번하면 위 횟수는 초과될 수 있다.
해결법
도커 이미지를 내려받을 수 있는 private container registry (프록시 서버)를 구축한다.
위 컨테이너 레지스트리가 사실상 docker hub의 프록시 역할을 해주게 하는 것.
따라서 docker image를 pulling할 때 도커 허브가 아닌 프록시를 찌르므로 Ratelimit 제약을 회피할 수 있게 된다.
보통 AWS ECR, Nexus, Harbor를 많이 이용하는 듯하다.
Harbor 관련 좋은 글이 있어서 기록 겸 여기에 남겨두려 한다.
https://engineering.linecorp.com/ko/blog/harbor-for-private-docker-registry
프록시 서버를 구축하게 되면, CI 및 docker-compose, docker yml 파일의 수정이 필요할 수 있다.
참고
- https://www.docker.com/blog/scaling-docker-to-serve-millions-more-developers-network-egress/
- https://velog.io/@king/private-docker-registry
- https://engineering.linecorp.com/ko/blog/harbor-for-private-docker-registry
'Infra > Docker' 카테고리의 다른 글
[ERROR] Communications link failure (Docker + MySQL + Spring JdbcTemplate 연동 실패) 에러 해결 (0) | 2022.04.24 |
---|---|
[Docker] 도커와 MySQL을 연동하여 사용하는 방법 (feat. IntelliJ) (2) | 2022.04.23 |