Der Amazon ECR Docker Credential Helper ist ein Anmeldeinformations-Helper für den Docker-Daemon, der die Verwendung von Amazon Elastic Container Registry erleichtert.
Voraussetzungen
Installieren
Amazon Linux 2023 (AL2023)
Amazon Linux 2 (AL2)
Mac OS
Debian Buster (und zukünftige Versionen)
Ubuntu 19.04 Disco Dingo und neuer
Arch Linux
Alpine Linux
Windows
Von der Quelle
Konfiguration
Docker
AWS-Anmeldeinformationen
Amazon ECR Docker Credential Helper
Verwendung
Fehlerbehebung
Sicherheitsoffenlegungen
Lizenz
Auf Ihrem System muss mindestens Docker 1.11 installiert sein.
Sie müssen außerdem über AWS-Anmeldeinformationen verfügen. Weitere Informationen zur Verwendung verschiedener AWS-Anmeldeinformationen finden Sie im Abschnitt „AWS-Anmeldeinformationen“.
Sie können den Amazon ECR Credential Helper aus den Amazon Linux 2023-Repositorys installieren.
$ sudo dnf install -y amazon-ecr-credential-helper
Sobald Sie den Credential Helper installiert haben, finden Sie im Abschnitt „Konfiguration“ Anweisungen, wie Sie Docker für die Arbeit mit dem Helper konfigurieren.
Sie können den Amazon ECR Credential Helper über docker
oder ecs
Extras installieren.
$ sudo amazon-linux-extras aktiviert Docker $ sudo yum installiere amazon-ecr-credential-helper
Sobald Sie den Credential Helper installiert haben, finden Sie im Abschnitt „Konfiguration“ Anweisungen, wie Sie Docker für die Arbeit mit dem Helper konfigurieren.
Eine von der Community gepflegte Homebrew-Formel ist im Core-Tap verfügbar.
$ brew installiere docker-credential-helper-ecr
Unter macOS ist die Verwendung von MacPorts eine weitere von der Community gepflegte Installationsmethode.
$ sudo port install docker-credential-helper-ecr
Sobald Sie den Credential Helper installiert haben, finden Sie im Abschnitt „Konfiguration“ Anweisungen, wie Sie Docker für die Arbeit mit dem Helper konfigurieren.
Sie können den Amazon ECR Credential Helper aus den Debian Buster-Archiven installieren. Dieses Paket wird auch in zukünftigen Versionen von Debian enthalten sein.
$ sudo apt-Update $ sudo apt installiere amazon-ecr-credential-helper
Sobald Sie den Credential Helper installiert haben, finden Sie im Abschnitt „Konfiguration“ Anweisungen, wie Sie Docker für die Arbeit mit dem Helper konfigurieren.
Sie können den Amazon ECR Credential Helper aus den Ubuntu 19.04 Disco Dingo-Archiven (und neueren Archiven) installieren.
$ sudo apt-Update $ sudo apt installiere amazon-ecr-credential-helper
Nachdem Sie den Credential Helper installiert haben, finden Sie im Abschnitt „Konfiguration“ Anweisungen, wie Sie Docker für die Arbeit mit dem Helper konfigurieren.
Ein von der Community verwaltetes Paket ist im Arch User Repository verfügbar.
$ Git-Klon https://aur.archlinux.org/amazon-ecr-credential-helper.git $ cd amazon-ecr-credential-helper $ makepkg -si
Nachdem Sie den Credential Helper installiert haben, finden Sie im Abschnitt „Konfiguration“ Anweisungen, wie Sie Docker für die Arbeit mit dem Helper konfigurieren.
Ein von der Community verwaltetes Paket ist im Alpine Linux aports Repository verfügbar.
$ apk Docker-Credential-ECR-Login hinzufügen
Notiz
Das Abzeichen zeigt nur Edge an. Überprüfen Sie das Repository auf stabile Versionen oder fügen Sie --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
hinzu
Nachdem Sie den Credential Helper installiert haben, finden Sie im Abschnitt „Konfiguration“ Anweisungen, wie Sie Docker für die Arbeit mit dem Helper konfigurieren.
Ausführbare Windows-Dateien sind über GitHub-Versionen verfügbar.
Notiz
Die Unterstützung von Windows ARM gilt als experimentell.
Siehe #795
Um den Amazon ECR Docker Credential Helper zu erstellen und zu installieren, empfehlen wir Go 1.19 oder höher, git
und make
auf Ihrem System zu installieren.
Wenn Sie Go gerade erst installiert haben, stellen Sie sicher, dass Sie es auch zu Ihrem PATH oder Ihren Umgebungsvariablen (Windows) hinzugefügt haben. Zum Beispiel:
$ export GOPATH=$HOME/go $ export PATH=$PATH:$GOPATH/bin
Oder unter Windows:
setx GOPATH %USERPROFILE%go <your existing PATH definitions>;%USERPROFILE%gobin
Wenn Sie den PATH nicht definiert haben, schlägt der folgende Befehl stillschweigend fehl und beim Ausführen docker-credential-ecr-login
wird Folgendes ausgegeben: command not found
Sie können dies über das go
-Befehlszeilentool installieren.
Um zu installieren, führen Sie Folgendes aus:
go install github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cli/docker-credential-ecr-login@latest
Warnung
Haftungsausschluss: Die Docker-Datei in diesem Repository wird zum Testen der Kreuzkompilierung der Amazon ECR-Anmeldeinformations-Helper-Binärdateien in GitHub Actions CI und als Entwicklerdienstprogramm zum lokalen Erstellen aus der Quelle verwendet. Es handelt sich um eine Referenzimplementierung und ist nicht auf Sicherheit für die Erstellung und Ausführung von Produktionscontainern ausgelegt.
Wenn Sie bereits über eine Docker-Umgebung verfügen, klonen Sie dieses Repository einfach irgendwo und führen Sie make build-in-docker
aus. Dieser Befehl erstellt die Binärdatei mit Go im Docker-Container und gibt sie in ein lokales Verzeichnis aus.
Mit der Umgebungsvariablen TARGET_GOOS
können Sie die Binärdatei auch kreuzkompilieren.
Nachdem Sie den Credential Helper installiert haben, finden Sie im Abschnitt „Konfiguration“ Anweisungen, wie Sie Docker für die Arbeit mit dem Helper konfigurieren.
Es ist nicht erforderlich docker login
oder docker logout
zu verwenden.
Platzieren Sie die Binärdatei docker-credential-ecr-login
in Ihrem PATH
und legen Sie den Inhalt Ihrer Datei ~/.docker/config.json
wie folgt fest:
{ "credsStore": "ecr-login"}
Dadurch wird der Docker-Daemon so konfiguriert, dass er den Credential Helper für alle Amazon ECR-Registrierungen verwendet.
Der Amazon ECR Docker Credential Helper kann zusammen mit Ihren vorhandenen Docker-Login-Authentifizierungstokens verwendet werden:
{ "credsStore": "ecr-login", "auths": { "https://index.docker.io/v1/": { "auth": [docker.io-auth-token] }, "registry.gitlab.com": { "auth": [gitlab-auth-token] }, } }
Mit Docker 1.13.0 oder höher können Sie Docker so konfigurieren, dass es unterschiedliche Hilfsprogramme für Anmeldeinformationen für verschiedene ECR-Registrierungen verwendet. Um diesen Anmeldeinformationshelfer für eine bestimmte ECR-Registrierung zu verwenden, erstellen Sie einen Abschnitt credHelpers
mit dem URI Ihrer ECR-Registrierung:
{ "credHelpers": { "public.ecr.aws": "ecr-login", "<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login" } }
Dies ist nützlich, wenn Sie docker
verwenden, um Registrierungen zu bearbeiten, die unterschiedliche Authentifizierungsdaten verwenden.
Mit dem Amazon ECR Docker Credential Helper können Sie AWS-Anmeldeinformationen verwenden, die an verschiedenen Orten gespeichert sind. Zu den Standardmodellen gehören:
Die freigegebene Anmeldeinformationsdatei ( ~/.aws/credentials
)
Die Umgebungsvariablen AWS_ACCESS_KEY_ID
und AWS_SECRET_ACCESS_KEY
Eine IAM-Rolle für eine Amazon ECS-Aufgabe
Eine IAM-Rolle für Amazon EC2
Um Anmeldeinformationen zu verwenden, die einem anderen benannten Profil in der gemeinsamen Anmeldeinformationsdatei ( ~/.aws/credentials
) zugeordnet sind, können Sie die Umgebungsvariable AWS_PROFILE
festlegen.
Der Amazon ECR Docker Credential Helper liest und unterstützt einige Konfigurationsoptionen, die in der gemeinsam genutzten AWS-Konfigurationsdatei ( ~/.aws/config
) angegeben sind. Um diese Optionen zu deaktivieren, müssen Sie die Umgebungsvariable AWS_SDK_LOAD_CONFIG
auf false
setzen. Zu den unterstützten Optionen gehören:
Mit role_arn
und source_profile
angegebene angenommene Rollen
Mit credential_process
angegebene externe Anmeldeinformationsprozesse
Webidentitäten wie IAM-Rollen für Dienstkonten in Kubernetes ( Hinweis: Kubernetes-Benutzer, die Container mit einem Nicht-Root-Benutzer verwenden, können auf die in diesem Fehler beschriebenen Berechtigungsprobleme stoßen und müssen möglicherweise eine Problemumgehung anwenden, die den Kubernetes securityContext
anpasst. )
Der Amazon ECR Docker Credential Helper verwendet dieselben Anmeldeinformationen wie die AWS CLI und die AWS SDKs. Weitere Informationen zum Konfigurieren von AWS-Anmeldeinformationen finden Sie unter Konfigurations- und Anmeldeinformationsdateien im AWS Command Line Interface-Benutzerhandbuch .
Auf die Anmeldeinformationen muss eine Richtlinie angewendet werden, die den Zugriff auf Amazon ECR ermöglicht.
Umgebungsvariable | Beispielwert | Beschreibung |
---|---|---|
AWS_ECR_DISABLE_CACHE | WAHR | Deaktiviert den lokalen Dateiauthentifizierungscache, wenn dieser auf einen nicht leeren Wert festgelegt ist |
AWS_ECR_CACHE_DIR | ~/.ecr | Gibt den Speicherort des lokalen Dateiauthentifizierungscache-Verzeichnisses an |
AWS_ECR_IGNORE_CREDS_STORAGE | WAHR | Ignorieren Sie Aufrufe zur Docker-Anmeldung oder -Abmeldung und tun Sie so, als wären sie erfolgreich gewesen |
docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker push 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker pull public.ecr.aws/amazonlinux/amazonlinux:latest
Wenn Sie zusätzliche Profile für die Verwendung mit der AWS CLI konfiguriert haben, können Sie diese Profile verwenden, indem Sie beim Aufruf docker
die Umgebungsvariable AWS_PROFILE
angeben. Zum Beispiel:
AWS_PROFILE=myprofile docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
Es ist nicht erforderlich docker login
oder docker logout
zu verwenden.
Wenn Sie sich zuvor manuell bei einem ECR-Repository authentifiziert haben, indem Sie den docker login
-Befehl manuell verwendet haben, hat Docker möglicherweise ein Authentifizierungstoken gespeichert, das inzwischen abgelaufen ist. Docker wird weiterhin versuchen, dieses zwischengespeicherte Authentifizierungstoken zu verwenden, anstatt den Credential Helper zu verwenden. Sie müssen das zuvor zwischengespeicherte abgelaufene Token mithilfe docker logout 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository
explizit entfernen. Danach beginnt Docker damit, den ECR-Anmeldeinformationshelfer zu verwenden, um neue Anmeldeinformationen abzurufen, und Sie müssen docker login
oder docker logout
nicht mehr verwenden.
Protokolle vom Amazon ECR Docker Credential Helper werden in ~/.ecr/log
gespeichert.
Weitere Informationen zu Amazon ECR finden Sie im Amazon Elastic Container Registry-Benutzerhandbuch.
Als experimentell gekennzeichnete Funktionen werden Benutzern optional zum Testen und Geben von Feedback zur Verfügung gestellt.
Wenn Sie experimentelle Funktionen testen, können Sie über das Tracking-Problem der Funktion Feedback zu Folgendem geben:
Ihre Erfahrungen mit der Funktion
Probleme oder Probleme
Verbesserungsvorschläge
Experimentelle Funktionen sind in Design und Implementierung unvollständig. Abwärtsinkompatible Änderungen können jederzeit eingeführt oder der Support ganz eingestellt werden. Daher werden experimentelle Funktionen nicht für den Einsatz in Produktionsumgebungen empfohlen .
Wenn Sie glauben, ein potenzielles Sicherheitsproblem gefunden zu haben, posten Sie es bitte nicht in der Rubrik „Probleme“. Befolgen Sie stattdessen bitte die Anweisungen hier oder senden Sie AWS Security direkt eine E-Mail.
Der Amazon ECR Docker Credential Helper ist unter der Apache 2.0-Lizenz lizenziert.