Dependency Proxy
Le Dependency Proxy de GitLab est un proxy cache pour les images Docker Hub. Il intercepte les pulls d'images publiques, les met en cache localement et les re-sert depuis l'instance GitLab. L'objectif est double : reduire la dependance au Docker Hub (rate limiting, disponibilite) et accelerer les pipelines CI.
Le probleme Docker Hub
Docker Hub applique des limites de pull pour les utilisateurs anonymes (100 pulls/6h par IP) et authentifies sur plan gratuit (200 pulls/6h par compte). Les machines runner partagent souvent une meme IP sortante, et les pipelines CI intensifs atteignent rapidement ces limites. Le resultat : des jobs qui echouent avec 429 Too Many Requests.
Configuration
Le Dependency Proxy est active par defaut depuis GitLab 15. L'URL du proxy est gitlab.example.com/groupname/dependency_proxy/containers. Pour l'utiliser dans un pipeline :
variables:
PROXY: $CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX
test:
image: $PROXY/python:3.12-slim
script:
- python --versionLa variable CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX est automatiquement injectee par GitLab et contient l'URL du proxy pour le groupe du projet.
Authentification
Le Dependency Proxy supporte l'authentification Docker Hub pour lever les rate limits. Configurer dans Admin > Network > Outbound requests ou dans les parametres du groupe :
dependency_proxy['docker_credentials'] = {
'username' => 'dockerhub-user',
'password' => 'dockerhub-token'
}Avec un compte Docker Hub Pro ou Team, les rate limits sont leves.
Comportement du cache
Le cache est stocke localement sur l'instance GitLab (ou sur object storage si configure). Une image mise en cache reste disponible meme si Docker Hub est temporairement indisponible. La TTL du cache est configurable. La commande docker pull via le proxy verifie quand meme si une version plus recente est disponible (manifest check), mais utilise le cache local si le digest correspond.