Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects

test: exported blogposts

Merged Christophe Chaudier requested to merge 29-import-all-blog-posts-from-wordpress into main
3 files
+ 0
284
Compare changes
  • Side-by-side
  • Inline
Files
3
---
title: "Mettre en cache les images Docker pour réduire le nombre d'appels au DockerHub depuis votre infrastructure CI/CD"
authors: "aboudreault"
date: "2021-05-17"
slug: "mettre-en-cache-les-images-docker-pour-reduire-le-nombre-dappels-au-dockerhub-depuis-votre-infrastructure-ci-cd"
tags:
- "ci-cd"
- "conteneurs"
- "devops"
- "docker"
- "froggit"
- "gitlab"
image: "Screenshot_20210116_175700.png"
---
Docker a annoncé qu'il va limiter le nombre de _pull requests_ faites à son service dans son offre gratuite. Nous partageons nos stratégies pour atténuer l'impact de cette nouvelle limitation de _pull requests_ pour les utilisateurs et les clients qui gèrent leur propre instance GitLab.
<!-- truncate -->
Le 24 août 2020, [Docker a annoncé des changements dans son modèle d'abonnement](https://www.docker.com/blog/scaling-docker-to-serve-millions-more-developers-network-egress/) et a initié un mouvement vers des limitations basées sur la consommation. Ces limitations concernent le nombre d'images de conteneurs Docker qui peuvent être extraites. Cela prend effet le 1er novembre 2020. Pour les _pull requests_ faites par des utilisateurs anonymes, la limitation est à présent de 100 _pulls requests_ toutes les 6 heures; les utilisateurs authentifiés ont une limite de 200 _pull requests_ par 6 heures.
En tant que membre de la communauté globale du DevOps, nous avons tous pris l'habitude de compter sur Docker comme partie intégrante des [processus CI / CD](https://about.gitlab.com/blog/2020/10/30/mitigating-the-impact-of-docker-hub-pull-requests-limits/topics/ci-cd/). Il n'est pas surprenant que chez GitLab, ils ont eu des retours de plusieurs membres de la communauté ainsi que de clients qui souhaitaient des conseils car ce changement de limitation Docker pouvait affecter leur flux de travail CI/CD en production.
## Utiliser un miroir de registre
Vous pouvez utiliser la fonctionnalité de miroir de registre pour connaître le nombre de _pull requests_ d'images générées sur DockerHub. Quand le miroir est configuré et GitLab Runner indique à Docker d'extraire des images, Docker va vérifier le miroir en premier; si c'est la première fois que l'image est extraite, une connexion va être faite à DockerHub. Les extractions suivantes de cette image utiliserons ensuite votre miroir au lieu de se connecter au DockerHub. [Vous pouvez trouver plus de détails sur comment ça marche ici.](https://docs.docker.com/registry/recipes/mirror/#how-does-it-work)
## Si vous êtes un utilisateur ou un client de GitLab SaaS
Pour les Shared Runners sur GitLab.com ils utilisent le miroir Google pour les images du Docker Hub. Cela signifie que les utilisateurs des CI jobs sur GitLab Shared Runners ne seront pas affectés par cette nouvelle politique concernant les pull requests. Ils vont continuer à surveiller l'impact de ces changements effectués par Docker.
## SI vous auto-hébergez des GitLab Runners
Tout d'abord, vérifiez si votre fournisseur d'hébergement ou de cloud ne vous fournit pas déjà un miroir de registre d'images. Si c'est le cas, c'est sûrement l'option la plus simple et la plus performante. Si pour une quelconque raison un registre de miroir hébergé ne peut pas être utilisé, l'administrateur peut installer son propre [miroir DockerHub](https://docs.docker.com/registry/recipes/mirror/).
## Démarrer le miroir de registre
Veuillez suivre les instructions dans [la documentation GitLab](https://docs.gitlab.com/runner/configuration/speed_up_job_execution.html):
1. Connectez-vous sur une machine dédiée où le proxy de miroir de registre tournera
2. Assurez-vous que [Docker Engine](https://docs.docker.com/install/) est installé sur cette machine
3. Créez un nouveau registre de conteneur
![](../images/Screenshot_20210116_175700.png)
Vous pouvez modifier le numéro de port (`6000`) pour exposer le registre avec un port différent. Cela démarrera le serveur avec `http`. Si vous souhaitez activer TLS (`https`) suivez la [documentation officielle](https://docs.docker.com/registry/configuration/#tls).
4. Vérifiez l'adresse IP du serveur :
![](../images/Screenshot_20210116_175830.png)
De préférence, choisissez l'adresse IP du réseau privé. Le réseau privé est généralement la solution la plus rapide pour les communications interne entre les machines d'un seul fournisseur (DigitalOcean, AWS, Azure..). Généralement, l'utilisation d'un réseau privé n'est pas prise en compte dans votre limite de bande passante mensuelle.
5. Le registre Docker sera accessible sous `MY_REGISTRY_IP:6000`
## Configurer Docker pour l'utiliser
La partie finale est d'avoir le processus `dockerd` configuré pour qu'il utilise votre miroir quand `docker pull` tourne.
### Docker
Ajouter l'option `--registry-mirror` lorsque vous démarrez le daemon Docker `dockerd` manuellement ou editez `/etc/docker/daemon.json` et ajoutez la clé et la valeur `registry-mirrors` pour que le changement soit permanent.
![](../images/Screenshot_20210116_175904.png)
### `docker+machine` executor
Mettez à jour le fichier de configuration du GitLab Runner `config.toml` pour spécifier [engine-registry-mirror à l'intérieur des paramètres MachineOptions.](https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-container-registry-mirroring)
### [Docker-in-Docker](https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-in-docker-workflow-with-docker-executor) pour construire des images Docker
Il y a différentes manière d'y parvenir, et cela dépend de votre configuration. Vous en trouverez une liste complète dans notre [documentation](https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#enable-registry-mirror-for-dockerdind-service).
## Vérifiez que ça fonctionne
### Assurez-vous que Docker est configuré pour utiliser le miroir
Si vous exécutez `docker info``dockerd` est configuré pour utiliser le miroir vous devriez voir ce qui suit apparaître :
![](../images/Screenshot_20210116_180200.png)
### Vérifiez le catalogue du registre
[L'API Docker Registry](https://docs.docker.com/registry/spec/api/) peut vous montrer quel dépôt il a mis en cache localement.
Etant donné que nous avons executé `docker pull node` pour la première fois avec `dockerd` configuré pour utiliser le miroir nous pouvons le voir [en listant les dépots](https://docs.docker.com/registry/spec/api/#listing-repositories).
![](../images/Screenshot_20210116_180255.png)
### Vérifiez les logs du registre
Lorsque vous faites des pull d'images vous devriez voir des logs venir concernant les informations demandées en exécutant `docker logs registry`, où `registry` est le nom du conteneur qui exécute le miroir.
![](../images/Screenshot_20210116_180328.png)
## Des alternatives aux miroirs DockerHub
Mettre en place un miroir de registre Docker peut également augmenter vos coûts d'infrastructure. Avec les nouvelles [limites de débit DockerHub,](https://docs.docker.com/docker-hub/download-rate-limit/) il pourrait être utile d'authentifier les _pulls_ au lieu d'avoir votre limite augmentée ou pas de limite du tout (suivant votre abonnement).
Il y a différentes façons de s'authentifier avec DockerHub sur GitLab CI et c'est [documenté en détail](https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#define-an-image-from-a-private-container-registry). Voici quelques exemples:
1. la variable `DOCKER_AUTH_CONFIG` est fournie.
2. le fichier `config.json` est placé dans le répertoire `$HOME/.docker`de l'utilisateur exécutant le processus GitLab Runner.
3. Lancez `docker login` si vous utilisez un flux de travail [Docker-in-Docker](https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-in-docker-workflow-with-docker-executor).
## En résumé
Comme vous pouvez le voir, il y a plusieurs manières de s'adapter aux nouvelles limites du Docker Hub et nous encourageons les utilisateurs à choisir la plus pertinente suivant les besoins de leur organisation. Outre les options décrites dans cet article, il est également possible de rester dans l'écosystème GitLab en utilisant le [GitLab Container Proxy, qui sera bientôt disponible pour les utilisateurs Core](https://about.gitlab.com/blog/2020/10/30/minor-breaking-change-dependency-proxy/).
Vous cherchez des utilisateurs ou une instance GitLab hébergée en France ? **[Rejoignez la Communautés Froggit](http://froggit.fr/)**.
**Crédits** [![](../images/by-sa.png)](https://creativecommons.org/licenses/by-sa/4.0/deed.fr) Le contenu de cet article est en Licence Libre Creative Commons Cet article est une traduction [issue du site de GitLab.](https://about.gitlab.com/blog/2020/10/30/mitigating-the-impact-of-docker-hub-pull-requests-limits/)
Loading