Paramètres pour éviter les restrictions Docker Hub dans CircleCI

problème

Docker Hub est un compte gratuit et un utilisateur non authentifié avec un nombre limité de pulls à partir de novembre (https://www.docker.com/pricing/resource-consumption-updates). Si vous travaillez sans authentification sur CircleCI, des restrictions basées sur l'adresse IP seront appliquées, et comme le nombre d'adresses IP CircleCI n'est pas grand par rapport aux utilisateurs, il y a des inquiétudes quant à l'impact.

L'équipe CircleCI semble parler à Docker, il ne sera donc peut-être pas nécessaire que les utilisateurs répondent à l'avenir. Cependant, si l'environnement CI / CD s'arrête, l'impact sera grand, alors maintenons la solution de contournement.

Solution

Si vous mordez l'authentification utilisateur de Docker Hub pour le moment, cela ne sera pas jugé par l'adresse IP, vous pouvez donc utiliser jusqu'à 200 pulls / 6h même avec un compte gratuit. Si cela devient plus que cela, vous devez charger Docker Hub, mais de toute façon, vous devez authentifier l'utilisateur sur CircleCI, donc le même travail se produira.

Procédure de travail

Authentifiez l'utilisateur Docker Hub sur CircleCI en suivant les étapes ci-dessous. Cliquez ici pour consulter l'intégralité du fichier config.yaml.

Définir le nom d'utilisateur et le mot de passe Docker Hub dans le contexte CircleCI

La procédure d'enregistrement dans Context sortira bientôt, je vais donc l'omettre. image.png

Ajouter un contexte au travail qui utilise Docker

  staging_steps: &staging_steps
    <<: *only_master
    context:
      - serverless_staging
      - docker-hub-credencials
  production_steps: &production_steps
    <<: *only_master
    context:
      - serverless_production
      - docker-hub-credencials

Ajouter l'authentification à la pièce à l'aide de Docker

Docker executor et les informations d'authentification définies à l'endroit où Docker est extrait dans Machine executor seront ajoutées. Vous trouverez ci-dessous un exemple d'exécuteur Docker.

Créer un article pour référence

references:
  docker_hub_authentication: &docker_hub_authentication
    auth:
      username: $DOCKERHUB_USER
      password: $DOCKERHUB_PASSWORD

Appliquer à tous les endroits où l'image est tirée

Ce qui suit est un exemple d'application aux parties résumées dans «exécuteurs».

executors:
  python3_6_1:
    working_directory: ~/repo
    docker:
      - image: circleci/python:3.6.1
        <<: *docker_hub_authentication
  test:
    working_directory: ~/repo
    docker:
      - image: circleci/python:3.6.1
        <<: *docker_hub_authentication
      - image: bluszcz/bflocalstack-dynamodb-s3
        <<: *docker_hub_authentication
      - image: alismedia/dynamodb-local
        <<: *docker_hub_authentication
        environment:
          MAX_HEAP_SIZE: 4096m
          HEAP_NEWSIZE: 3072m
      #Aucune information d'identification requise car il ne s'agit pas d'un Docker Hub
      - image: docker.elastic.co/elasticsearch/elasticsearch:6.2.0
        environment:
          discovery.type: single-node

Si vous pouvez définir les paramètres ci-dessus et créer les mêmes qu'avant la modification, vous avez terminé.

Erreur

Si vous ajoutez accidentellement vos informations d'identification à un emplacement qui n'est pas Docker Hub, vous obtiendrez l'erreur suivante:

Error response from daemon: Get https://docker.elastic.co/v2/elasticsearch/elasticsearch/manifests/6.2.0: unauthorized: authentication required

Ce qui suit est une erreur mystérieuse. C'est la première fois que je le vois.

Allocating a remote Docker Engine
Requesting version: 18.09.3

Got error while creating host: failed to create host: rpc error: code = Unknown desc = failed to create VM: Put "https://vm-service.infra.circleci.com/tasks/5f7ffcbaa7b0aa6a8ec29c79-0-build%2F59C7C9D1": EOF
We had an unexpected error preparing a VM for this build, potentially due to our infrastructure or cloud provider.  Please retry the build in a few minutes

Réexécutez comme indiqué et il a été résolu.

Recommended Posts

Paramètres pour éviter les restrictions Docker Hub dans CircleCI
Pour exécuter JavaFX sur Docker
Remarques sur la migration de CircleCI 1.0 vers 2.0
Déployer des rails sur Docker vers heroku
Poussez l'image vers le hub docker à l'aide de Jib
Liberty sur Docker
Redmine sur Docker
Exécutez Rubocop et RSpec sur CircleCI et déployez-le sur ECS
Indiquez comment apprendre de Docker à AKS sur AWS