

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
<a name="private-auth-container-instances"></a>

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. Dieses Feature wird nur von Aufgaben unterstützt, die EC2 verwenden.

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 sie dann in Ihrer Container-Definition zu referenzieren. Auf diese Weise können Ihre Aufgaben Images aus privaten Repositorys verwenden. Diese Methode unterstützt Aufgaben, die entweder EC2 oder Fargate verwenden. Weitere Informationen finden Sie unter [Verwenden von AWS Nicht-Container-Images in Amazon ECS](private-auth.md).

Der Amazon-ECS-Container-Agent sucht nach zwei Umgebungsvariablen, wenn er gestartet wird:
+ `ECS_ENGINE_AUTH_TYPE` gibt die Art der gesendeten Authentifizierungsdaten an.
+ `ECS_ENGINE_AUTH_DATA` enthält die tatsächlichen Anmeldeinformationen für die Authentifizierung.

Linux-Varianten des Amazon ECS-optimized AMI scannen die `/etc/ecs/ecs.config` Datei nach diesen Variablen, wenn die Container-Instance gestartet wird, und jedes Mal, wenn der Service gestartet wird (mit dem **sudo start ecs** Befehl). AMIs, die nicht Amazon sind, ECS-optimized sollten diese Umgebungsvariablen in einer Datei speichern und sie mit der `--env-file {{path_to_env_file}}` Option an den **docker run** Befehl übergeben, der den Container-Agenten startet.

**Wichtig**  
Wir raten davon ab, diese Umgebungsvariablen für die Authentifizierung beim Start der Instance mit Amazon EC2-Benutzerdaten einzufügen oder sie mit der Option `--env` an den Befehl **docker run** 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](ecs-config-s3.md).

## Authentifizierungsformate
<a name="docker-auth-formats"></a>

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 sollten die folgenden Umgebungsvariablen zur Umgebungsvariablendatei (`/etc/ecs/ecs.config`für das Amazon ECS-optimized AMI) hinzugefügt werden, die der Amazon ECS-Container-Agent zur Laufzeit lädt. Wenn Sie kein ECS-optimized Amazon-AMI verwenden und den Agenten manuell mit starten**docker run**, geben Sie die Umgebungsvariablendatei mit der `--env-file {{path_to_env_file}}` Option an, wenn Sie den Agenten starten.

```
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 sollten die folgenden Umgebungsvariablen zur Umgebungsvariablendatei (`/etc/ecs/ecs.config`für das Amazon ECS-optimized AMI) hinzugefügt werden, die der Amazon ECS-Container-Agent zur Laufzeit lädt. Wenn Sie kein ECS-optimized Amazon-AMI verwenden und den Agenten manuell mit starten**docker run**, geben Sie die Umgebungsvariablendatei mit der `--env-file {{path_to_env_file}}` Option an, wenn Sie den Agenten starten.

```
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
<a name="enabling-private-registry"></a>

Gehen Sie wie folgt vor, um private Registrierungen für Ihre Container-Instances zu aktivieren.

**Um private Registries im Amazon ECS-optimized AMI zu aktivieren**

1. Melden Sie sich mit SSH an Ihrer Container-Instance an.

1. Öffnen Sie die Datei `/etc/ecs/ecs.config` und fügen Sie die Werte `ECS_ENGINE_AUTH_TYPE` und `ECS_ENGINE_AUTH_DATA` für Ihre Registrierung und Ihr Konto hinzu:

   ```
   sudo vi /etc/ecs/ecs.config
   ```

   Dieses 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}}"}}
   ```

1. Überprüfen Sie, ob ihr Agent die Umgebungsvariable `ECS_DATADIR` nutzt, um seinen Status zu speichern:

   ```
   docker inspect ecs-agent | grep ECS_DATADIR
   ```

   Ausgabe:

   ```
   "ECS_DATADIR=/data",
   ```
**Wichtig**  
Wenn der vorherige Befehl die Umgebungsvariable `ECS_DATADIR` nicht 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 Umgebungsvariable `ECS_DATADIR` speichern 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](ecs-agent-update.md).

1. Stoppen Sie den Service `ecs`:

   ```
   sudo stop ecs
   ```

   Ausgabe:

   ```
   ecs stop/waiting
   ```

1. Den Service `ecs` neu starten.
   + Für das Amazon ECS-optimized Amazon Linux 2 AMI:

     ```
     sudo systemctl restart ecs
     ```
   + Für das Amazon ECS-optimized Amazon Linux AMI:

     ```
     sudo stop ecs && sudo start ecs
     ```

1. (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](ecs-agent-introspection.md).

   ```
   curl http://localhost:51678/v1/metadata
   ```