Docker Hub ist ein kostenloses Konto und ein nicht authentifizierter Benutzer mit einer begrenzten Anzahl von Pulls ab November (https://www.docker.com/pricing/resource-consumption-updates). Wenn Sie mit CircleCI ohne Authentifizierung arbeiten, werden IP-Adress-basierte Einschränkungen angewendet. Da die Anzahl der CircleCI-IP-Adressen im Vergleich zu Benutzern nicht groß ist, bestehen Bedenken hinsichtlich der Auswirkungen.
Das CircleCI-Team scheint mit Docker zu sprechen, daher müssen Benutzer möglicherweise in Zukunft nicht mehr antworten. Wenn die CI / CD-Umgebung jedoch stoppt, sind die Auswirkungen groß. Halten Sie also die Problemumgehung gedrückt.
Wenn Sie die Benutzerauthentifizierung von Docker Hub vorerst beißen, wird sie nicht anhand der IP-Adresse beurteilt, sodass Sie auch mit einem kostenlosen Konto bis zu 200 Pulls / 6h verwenden können. Wenn es mehr als das wird, müssen Sie Docker Hub aufladen, aber trotzdem müssen Sie den Benutzer auf CircleCI authentifizieren, damit die gleiche Arbeit ausgeführt wird.
Authentifizieren Sie den Docker Hub-Benutzer in CircleCI, indem Sie die folgenden Schritte ausführen.
Klicken Sie hier für die gesamte config.yaml
.
Das Verfahren zur Registrierung im Kontext wird in Kürze veröffentlicht, daher werde ich es weglassen.
staging_steps: &staging_steps
<<: *only_master
context:
- serverless_staging
- docker-hub-credencials
production_steps: &production_steps
<<: *only_master
context:
- serverless_production
- docker-hub-credencials
Docker-Executor und die Authentifizierungsinformationen, die an der Stelle festgelegt wurden, an der Docker in Machine Executor abgerufen wird, werden hinzugefügt. Unten finden Sie ein Beispiel für einen Docker-Executor.
references:
docker_hub_authentication: &docker_hub_authentication
auth:
username: $DOCKERHUB_USER
password: $DOCKERHUB_PASSWORD
Das Folgende ist ein Beispiel für die Anwendung auf die in "Ausführenden" zusammengefassten Teile.
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
#Keine Anmeldeinformationen erforderlich, da es sich nicht um einen Docker Hub handelt
- image: docker.elastic.co/elasticsearch/elasticsearch:6.2.0
environment:
discovery.type: single-node
Wenn Sie die obigen Einstellungen vornehmen und dieselben wie vor der Änderung erstellen können, sind Sie fertig.
Wenn Sie Ihre Anmeldeinformationen versehentlich einem Speicherort hinzufügen, der nicht Docker Hub ist, wird die folgende Fehlermeldung angezeigt:
Error response from daemon: Get https://docker.elastic.co/v2/elasticsearch/elasticsearch/manifests/6.2.0: unauthorized: authentication required
Das Folgende ist ein mysteriöser Fehler. Dies ist das erste Mal, dass ich es gesehen habe.
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
Führen Sie es wie angewiesen erneut aus und es wurde behoben.
Recommended Posts