Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Konfiguration von Amazon-ECS-Container-Instances für private Docker-Images
Der Amazon-ECS-Container-Agent kann sich unter Verwendung der Standardauthentifizierung bei privaten Registrys authentifizieren. Wenn Sie die Authentifizierung bei privaten Registrierungen aktivieren, können Sie private Docker-Images in Ihren Aufgabendefinitionen verwenden. Diese Funktion wird nur von Aufgaben unterstützt, die verwenden EC2.
Eine andere Methode zur Aktivierung der Authentifizierung in privaten Registern besteht AWS Secrets Manager darin, Ihre Anmeldedaten für die private Registrierung sicher zu speichern und dann in Ihrer Containerdefinition darauf zu verweisen. Auf diese Weise können Ihre Aufgaben Images aus privaten Repositorys verwenden. Diese Methode unterstützt Aufgaben, die entweder Fargate EC2 oder Fargate verwenden. Weitere Informationen finden Sie unter Verwenden von AWS Nicht-Container-Images in Amazon ECS.
Der Amazon-ECS-Container-Agent sucht nach zwei Umgebungsvariablen, wenn er gestartet wird:
-
ECS_ENGINE_AUTH_TYPEgibt die Art der gesendeten Authentifizierungsdaten an. -
ECS_ENGINE_AUTH_DATAenthält die tatsächlichen Anmeldeinformationen für die Authentifizierung.
Linux-Varianten des für Amazon ECS optimierten AMI scannen die /etc/ecs/ecs.config Datei beim Start der Container-Instance und bei jedem Start des Service (mit dem sudo start ecs Befehl) nach diesen Variablen. AMIs die nicht für Amazon ECS optimiert sind, sollten diese Umgebungsvariablen in einer Datei speichern und sie zusammen mit der --env-file Option an den docker run Befehl übergeben, der den Container-Agenten startet.path_to_env_file
Wichtig
Wir empfehlen nicht, diese Authentifizierungsumgebungsvariablen beim Instance-Start mit EC2 Amazon-Benutzerdaten einzufügen oder sie zusammen mit der --env Option an den docker run Befehl zu übergeben. Diese Methoden eigenen sich nicht für vertrauliche Daten wie z. B. Anmeldeinformationen für die Authentifizierung. Anweisungen dazu, wie Sie die Anmeldeinformationen für die Authentifizierung Ihrer Container-Instance sicher hinzufügen, finden Sie unter Speichern der Konfiguration von Amazon-ECS-Container-Instances in Amazon S3.
Authentifizierungsformate
Es gibt zwei Formate der Authentifizierung bei privaten Registrierungen: dockercfg und docker.
dockercfg-Authentifizierungsformat
Das Format dockercfg verwendet die in der Konfigurationsdatei gespeicherten Authentifizierungsinformationen. Diese Konfigurationsdatei wird erstellt, wenn Sie den Befehl docker
login ausführen. Sie können diese Datei durch die Ausführung von docker
login auf Ihrem lokalen System erstellen, wobei Sie den registrierten Benutzernamen, das Passwort und die E-Mail-Adresse eingeben. Sie können sich auch bei einer Container-Instance anmelden und den Befehl dort ausführen. Je nachdem, welche Docker-Version Sie verwenden, wird diese Datei entweder als ~/.dockercfg oder ~/.docker/config.json gespeichert.
cat ~/.docker/config.json
Ausgabe:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i"
}
}
}
Wichtig
Bei neueren Docker-Versionen wird, wie oben zu sehen, eine Konfigurationsdatei mit einem äußeren auths-Objekt erstellt. Der Amazon-ECS-Agent unterstützt nur dockercfg-Authentifizierungsdaten im folgenden Format, ohne das auths-Objekt. Wenn das Dienstprogramm jq installiert ist, können Sie diese Daten mit dem folgenden Befehl extrahieren: cat ~/.docker/config.json | jq
.auths.
cat ~/.docker/config.json | jq .auths
Ausgabe:
{
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i",
"email": "email@example.com"
}
}
Im obigen Beispiel sollte die folgende Umgebungsvariable der Umgebungsvariablendatei (/etc/ecs/ecs.config für das Amazon-ECS-optimierte AMI), die der Amazon-ECS-Container-Agent während der Laufzeit lädt, hinzugefügt werden. Wenn Sie das Amazon-ECS-optimierte AMI nicht verwenden und den Agenten manuell mit dem Befehl docker
run starten, müssen Sie die Umgebungsvariablendatei beim Starten des Agenten mit der Option --env-file
festlegen.path_to_env_file
ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}
Sie können mehrere private Registrierungen mit der folgenden Syntax konfigurieren:
ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"repo.example-01.com":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example-01.com"},"repo.example-02.com":{"auth":"fQ172MzEXAMPLEoF7225DU0j","email":"email@example-02.com"}}
docker-Authentifizierungsformat
Das docker-Format verwendet eine JSON-Darstellung des Registrierungsservers, auf dem sich der Agent authentifizieren soll. Außerdem enthält es die Authentifizierungsparameter, die für diese Registrierung benötigt werden (z. B. Benutzername, Passwort und E-Mail-Adresse für dieses Konto). Für ein Docker Hub-Konto sieht die JSON-Darstellung wie folgt aus:
{ "https://index.docker.io/v1/": { "username": "my_name", "password": "my_password", "email": "email@example.com" } }
In diesem Beispiel sollte die folgende Umgebungsvariable der Umgebungsvariablendatei (/etc/ecs/ecs.config für das Amazon-ECS-optimierte AMI), die der Amazon-ECS-Container-Agent während der Laufzeit lädt, hinzugefügt werden. Wenn Sie das Amazon-ECS-optimierte AMI nicht verwenden und den Agenten manuell mit dem Befehl docker
run starten, müssen Sie die Umgebungsvariablendatei beim Starten des Agenten mit der Option --env-file
festlegen.path_to_env_file
ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}
Sie können mehrere private Registrierungen mit der folgenden Syntax konfigurieren:
ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"repo.example-01.com":{"username":"my_name","password":"my_password","email":"email@example-01.com"},"repo.example-02.com":{"username":"another_name","password":"another_password","email":"email@example-02.com"}}
Verfahren
Gehen Sie wie folgt vor, um private Registrierungen für Ihre Container-Instances zu aktivieren.
So aktivieren Sie private Registrierungen im Amazon-ECS-optimierten AMI
-
Melden Sie sich mit SSH an Ihrer Container-Instance an.
-
Öffnen Sie die Datei
/etc/ecs/ecs.configund fügen Sie die WerteECS_ENGINE_AUTH_TYPEundECS_ENGINE_AUTH_DATAfür Ihre Registrierung und Ihr Konto hinzu:sudo vi /etc/ecs/ecs.configDieses Beispiel authentifiziert ein Docker Hub-Benutzerkonto:
ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}} -
Überprüfen Sie, ob ihr Agent die Umgebungsvariable
ECS_DATADIRnutzt, um seinen Status zu speichern:docker inspect ecs-agent | grep ECS_DATADIRAusgabe:
"ECS_DATADIR=/data",
Wichtig
Wenn der vorherige Befehl die Umgebungsvariable
ECS_DATADIRnicht zurücksendet, müssen Sie sämtliche Aufgaben, die auf dieser Container-Instance ausgeführt werden, abbrechen, bevor Sie Ihren Agenten stoppen. Neuere Agenten mit der UmgebungsvariableECS_DATADIRspeichern ihren Status und Sie können sie stoppen und starten, während Aufgaben problemlos ausgeführt werden. Weitere Informationen finden Sie unter Überprüfen des Amazon-ECS-Container-Agenten. -
Stoppen Sie den Service
ecs:sudo stop ecsAusgabe:
ecs stop/waiting
-
Den Service
ecsneu starten.-
Für das Amazon-ECS-optimierte Amazon Linux 2-AMI:
sudo systemctl restart ecs -
Für das Amazon-ECS-optimierte Amazon Linux AMI:
sudo stop ecs && sudo start ecs
-
-
(Optional) Durch Abfragen der Agenten-Introspektions-API-Operation können Sie überprüfen, ob der Agent ausgeführt wird und Sie können Informationen über Ihre neue Container-Instance einholen. Weitere Informationen finden Sie unter Amazon-ECS-Container-Introspektion.
curl http://localhost:51678/v1/metadata