

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.

# Arbeiten mit Amazon Elastic Container Registry
<a name="ecr-working"></a>

Sie können direkt vom AWS Explorer in VS Code auf den Service Amazon Elastic Container Registry (Amazon ECR) zugreifen und ihn verwenden, um ein Programm-Image in ein Amazon ECR-Repository zu übertragen. Um zu beginnen, müssen Sie die folgenden Schritte ausführen:

1. Erstellen Sie eine Dockerfile-Datei, die die zum Erstellen eines Images erforderlichen Informationen enthält.

1. Erstellen Sie ein Image aus dieser Dockerfile-Datei und markieren Sie das Image für die Verarbeitung.

1. Erstellen Sie ein Repository in Ihrer Amazon ECR-Instance. 

1. Verschieben Sie das Image in Ihr Repository.

## Voraussetzungen
<a name="prereqs-awstoolkit-vscode-ecr"></a>

Sie müssen diese Schritte ausführen, um über den VS Code Explorer auf den Amazon ECR-Service zuzugreifen. 

### Erstellen eines IAM-Benutzers
<a name="create-an-iam-user"></a>

Bevor Sie auf einen AWS Service wie Amazon ECR zugreifen können, müssen Sie Anmeldeinformationen angeben. Auf diese Weise kann der Service feststellen, ob Sie berechtigt sind, auf seine Ressourcen zuzugreifen. Wir empfehlen nicht, dass Sie AWS direkt über die Anmeldeinformationen für Ihr AWS Root-Konto zugreifen. Verwenden Sie stattdessen AWS Identity and Access Management (IAM), um einen IAM-Benutzer zu erstellen und diesen Benutzer dann einer IAM-Gruppe mit Administratorberechtigungen hinzuzufügen. Sie können dann AWS mit einer speziellen URL und den Anmeldeinformationen für den IAM-Benutzer darauf zugreifen.

Wenn Sie sich für einen IAM-Benutzer registriert haben, AWS aber keinen für sich selbst erstellt haben, können Sie mithilfe der IAM-Konsole einen erstellen.

Wählen Sie zum Erstellen eines Administratorbenutzers eine der folgenden Optionen aus.


****  

| Wählen Sie eine Möglichkeit zur Verwaltung Ihres Administrators aus. | Bis | Von | Sie können auch | 
| --- | --- | --- | --- | 
| Im IAM Identity Center (Empfohlen) | Verwendung von kurzfristigen Anmeldeinformationen für den Zugriff auf AWS.Dies steht im Einklang mit den bewährten Methoden für die Sicherheit. Weitere Informationen zu bewährten Methoden finden Sie unter [Bewährte Methoden für die Sicherheit in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) im *IAM-Benutzerhandbuch*. | Beachtung der Anweisungen unter [Erste Schritte](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) im AWS IAM Identity Center -Benutzerhandbuch. | Konfigurieren Sie den programmatischen Zugriff, indem [Sie den AWS IAM Identity Center im AWS CLI Benutzerhandbuch zu verwendenden](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-sso.html)AWS Command Line Interface konfigurieren. | 
| In IAM (Nicht empfohlen) | Verwendung von langfristigen Anmeldeinformationen für den Zugriff auf AWS. | Folgen Sie den Anleitungen unter [IAM-Benutzer für den Notfallzugriff erstellen](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-emergency-iam-user.html) im IAM-Benutzerhandbuch. | Sie konfigurieren den programmgesteuerten Zugriff unter Verwendung der Informationen unter [Verwalten der Zugriffsschlüssel für IAM-Benutzer](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html) im IAM-Benutzerhandbuch. | 

Um sich als dieser neue IAM-Benutzer anzumelden, melden Sie sich von der AWS Konsole ab und verwenden Sie dann die folgende URL. In der folgenden URL, wobei *your\_aws\_account\_id* Ihre AWS Kontonummer ohne Bindestriche ist (wenn Ihre Kontonummer beispielsweise lautet, lautet Ihre AWS Konto-ID): `1234-5678-9012` AWS `123456789012`

```
https://{{your_aws_account_id}}.signin.aws.amazon.com/console/
```

Geben Sie den IAM-Benutzernamen und das von Ihnen soeben erstellte Passwort ein. Nachdem Sie sich angemeldet haben, wird in der Navigationsleiste „*your\_user\_name* @ *your\_aws\_account\_id*“ angezeigt.

Wenn Sie nicht möchten, dass die URL für Ihre Anmeldeseite Ihre Konto-ID enthält, können Sie einen AWS Kontoalias erstellen. Wählen Sie im IAM-Dashboard die Option **Anpassen** und geben Sie einen **Kontoalias** ein. Dies kann Ihr Firmenname sein. Weitere Informationen finden Sie unter [Ihre AWS Konto-ID und deren Alias](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html) im IAM-Benutzerhandbuch.

Nach dem Erstellen eines Konto-Alias verwenden Sie die folgende URL, um sich anzumelden:

```
https://{{your_account_alias}}.signin.aws.amazon.com/console/
```

Um den Anmeldelink der IAM-Benutzer Ihres Kontos zu verifizieren, öffnen Sie die IAM-Konsole und prüfen dies im Dashboard unter **IAM users sign-in link**.

Weitere Informationen über IAM finden Sie im [AWS Identity and Access Management Benutzerhandbuch ](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

### Installieren und konfigurieren Sie Docker
<a name="create-an-iam-user"></a>

Sie können Docker installieren und konfigurieren, indem Sie im Benutzerhandbuch zur [Installation der Docker Engine](https://docs.docker.com/engine/install/) Ihr bevorzugtes Betriebssystem auswählen und den Anweisungen folgen.

### Installieren und konfigurieren Sie AWS CLI Version 2
<a name="create-an-iam-user"></a>

Installieren und konfigurieren Sie AWS CLI Version 2, indem Sie im Benutzerhandbuch zur [Installation, Aktualisierung und Deinstallation der AWS CLI Version 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) Ihr bevorzugtes Betriebssystem auswählen.

## 1. Erstellen einer Dockerfile-Datei
<a name="dockerfile-ecr-vsctoolkit"></a>

Docker verwendet eine Datei namens Dockerfile, um ein Image zu definieren, das per Push übertragen und in einem Remote-Repository gespeichert werden kann. Bevor Sie ein Bild in ein ECR-Repository hochladen können, müssen Sie ein Dockerfile erstellen und dann ein Image aus diesem Dockerfile erstellen.

**Erstellen einer Dockerfile-Datei**

1. Verwenden Sie das Toolkit for VS Code Explorer, um zu dem Verzeichnis zu navigieren, in dem Sie Ihre Dockerfile speichern möchten.

1. **Erstellen Sie eine neue Datei namens Dockerfile.**
**Anmerkung**  
VS Code könnte Sie auffordern, einen Dateityp oder eine Dateierweiterung auszuwählen. Wählen Sie in diesem Fall **Klartext** aus. Vs Code hat die Erweiterung „Dockerfile“. Wir empfehlen jedoch, diese nicht zu verwenden. Dies liegt daran, dass die Erweiterung Konflikte mit bestimmten Versionen von Docker oder anderen zugehörigen Anwendungen verursachen kann.

**Bearbeiten Sie Ihr Dockerfile mit VS Code**

Wenn Ihre Dockerfile-Datei eine Dateierweiterung hat, öffnen Sie das Kontextmenü (rechte Maustaste) für die Datei und entfernen Sie die Dateierweiterung.

Nachdem die Dateierweiterung aus Ihrer Dockerfile-Datei entfernt wurde:

1. Öffnen Sie das leere Dockerfile direkt in VS Code.

1. Kopieren Sie den Inhalt des folgenden Beispiels in Ihr Dockerfile:  
**Example Dockerfile-Image-Vorlage**  

   ```
   FROM ubuntu:18.04
   
   # Install dependencies
   RUN apt-get update && \
    apt-get -y install apache2
   
   # Install apache and write hello world message
   RUN echo 'Hello World!' > /var/www/html/index.html
   
   # Configure apache
   RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
    echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
    echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ 
    echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
    chmod 755 /root/run_apache.sh
   
   EXPOSE 80
   
   CMD /root/run_apache.sh
   ```

   Dies ist eine Dockerfile-Datei, die ein Ubuntu-18.04-Image verwendet. Die **RUN**-Anweisungen aktualisieren die Paketcaches. Installieren Sie Softwarepakete für den Webserver und schreiben Sie dann den Inhalt „Hello World\!“ in das Dokumenten-Stammverzeichnis des Webservers. Die **EXPOSE**-Anweisung stellt Port 80 auf dem Container bereit, und die **CMD**-Anweisung startet den Webserver.

1. Speichern Sie Ihre Dockerfile-Datei.
**Wichtig**  
Stellen Sie sicher, dass Ihrem Dockerfile keine Erweiterung an den Namen angehängt ist. Eine Dockerfile-Datei mit Erweiterungen kann Konflikte mit bestimmten Versionen von Docker oder anderen zugehörigen Anwendungen verursachen.

## 2. Erstellen Sie Ihr Image aus Ihrem Dockerfile
<a name="build-docker-image"></a>

Das von Ihnen erstellte Dockerfile enthält die Informationen, die zum Erstellen eines Images für ein Programm erforderlich sind. Bevor Sie dieses Image auf Ihre Amazon ECR-Instance übertragen können, müssen Sie zuerst das Image erstellen.

**Erstellen Sie ein Image aus Ihrem Dockerfile**

1. Verwenden Sie die Docker-CLI oder eine CLI, die in Ihre Docker-Instanz integriert ist, um zu dem Verzeichnis zu navigieren, das Ihre Dockerfile enthält.

1. Führen Sie den Befehl **Docker build** aus, um das Image zu erstellen, das in Ihrem Dockerfile definiert ist.

   ```
             docker build -t hello-world .
   ```

1. Führen Sie den Befehl **Docker images** aus, um zu überprüfen, ob das Image korrekt erstellt wurde.

   ```
   docker images --filter reference=hello-world
   ```  
**Example Beispielausgabe:**  

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. 
**Anmerkung**  
Dieser Schritt ist nicht notwendig, um Ihr Image zu erstellen oder zu übertragen, aber Sie können sehen, wie das Programm-Image funktioniert, wenn es ausgeführt wird.

   Verwenden Sie den Befehl **Docker run, um das neu erstellte Image auszuführen**.

   ```
   docker run -t -i -p 80:80 hello-world
   ```

   Die Option **-p**, die im vorherigen Beispiel angegeben wurde, ordnet den exponierten **Port 80** auf dem Container dem **Port 80** des Hostsystems zu. Wenn Sie Docker lokal ausführen, navigieren Sie mit Ihrem Webbrowser zu [http://localhost:80](http://localhost:80). Wenn das Programm korrekt ausgeführt wurde, ein „Hello World\!“ Die Anweisung wird angezeigt.

   Weitere Informationen zum Befehl **Docker run** finden Sie in der [Docker run reference](https://docs.docker.com/engine/reference/run/) auf der Docker-Website.

## 3. Erstellen Sie ein neues Repository
<a name="create-repository"></a>

Wenn Sie das Image in Ihre Amazon-ECR-Instance hochladen möchten, erstellen Sie ein neues Repository, in dem es gespeichert werden kann.

**Neues Amazon ECR-Repository erstellen**

1. Wählen Sie in der VS **Code-Aktivitätsleiste** das **AWS Toolkit-Symbol** aus.

1. Erweitern Sie das ** AWS Explorer-Menü**.

1. Suchen Sie die AWS Standardregion, die mit Ihrem AWS Konto verknüpft ist. Wählen Sie es dann aus, um eine Liste der Dienste anzuzeigen, die über das Toolkit for VS Code bereitgestellt werden.

1. Wählen Sie die Option **ECR \+**, um mit der **Erstellung eines neuen Repositorys** zu beginnen.

1. Folgen Sie den Anweisungen, um den Vorgang abzuschließen.

1. Nach Abschluss des Vorgangs können Sie über den **ECR-Bereich** des AWS Explorer-Menüs auf Ihr neues Repository zugreifen.

## 4. Bilder per Push übertragen, abrufen und löschen
<a name="push-image"></a>

Nachdem Sie ein Image aus Ihrer Dockerfile-Datei erstellt und ein Repository erstellt haben, können Sie Ihr Image in Ihr Amazon-ECR-Repository übertragen. Darüber hinaus können Sie mit dem AWS Explorer mit Docker und der AWS CLI Folgendes tun:
+ Ein Image aus Ihrem Repository abrufen
+ Ein Bild, das in deinem Repository gespeichert ist, löschen
+ Ihr Repository löschen

**Authentifizieren Sie Docker mit Ihrer Standardregistrierung**

Für den Datenaustausch zwischen Amazon-ECR-Instances und Docker-Instanzen ist eine Authentifizierung erforderlich. So authentifizieren Sie Docker für Ihre Registry:

1. Öffnen Sie ein Befehlszeilenbetriebssystem, das mit Ihrer AWS CLI-Instanz verbunden ist. 

1. Verwenden Sie **get-login-password**diese Methode, um sich bei Ihrer privaten ECR-Registrierung zu authentifizieren.

   ```
   aws ecr get-login-password --region region | docker login --username AWS --password-stdin AWS_account_id.dkr.ecr.region.amazonaws.com
   ```
**Wichtig**  
Im vorherigen Befehl müssen Sie **region** sowohl die als auch **AWS\_account\_id** die für Ihr AWS Konto spezifischen Informationen aktualisieren.

**Taggen Sie ein Bild und übertragen Sie es in Ihr Repository**

Nachdem Sie Docker mit Ihrer Instanz von authentifiziert haben AWS, übertragen Sie ein Bild in Ihr Repository.

1. Verwenden Sie den Befehl **Docker images**, um die Bilder anzuzeigen, die Sie lokal gespeichert haben, und um das Bild zu identifizieren, das Sie taggen möchten.

   ```
   docker images
   ```  
**Example Beispielausgabe:**  

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. Markieren Sie Ihr Image mit dem Befehl **Docker tag**.

   ```
   docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```

1. Pushen Sie das markierte Bild mit dem Befehl **Docker tag** in Ihr Repository.

   ```
   docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```  
**Example Beispielausgabe:**  

   ```
   The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1)
   e9ae3c220b23: Pushed
   a6785352b25c: Pushed
   0998bf8fb9e9: Pushed
   0a85502c06c9: Pushed
   latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
   ```

Nachdem Ihr markiertes Bild erfolgreich in Ihr Repository hochgeladen wurde, ist es im AWS Explorer-Menü sichtbar.

**Ein Bild aus Amazon ECR abrufen**
+ Sie können ein Bild in Ihre lokale Instance des Befehls **Docker tag** abrufen.

  ```
  docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  ```  
**Example Beispielausgabe:**  

  ```
  The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1)
  e9ae3c220b23: Pushed
  a6785352b25c: Pushed
  0998bf8fb9e9: Pushed
  0a85502c06c9: Pushed
  latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
  ```

**Löschen Sie ein Bild aus Ihrem Amazon ECR-Repository**

Es gibt zwei Methoden, um ein Bild aus VS Code zu löschen. Die erste Methode ist die Verwendung des AWS Explorers.

1. Erweitern Sie im AWS Explorer das **ECR-Menü**

1. Erweitern Sie das Repository, aus dem Sie ein Bild löschen möchten

1. Wählen Sie das Bild-Tag, das dem Bild zugeordnet ist, das Sie löschen möchten, indem Sie das Kontextmenü öffnen (Rechtsklick)

1. Wählen Sie „**Tag löschen“...** Option, um alle gespeicherten Bilder zu löschen, die mit diesem Tag verknüpft sind

**Löschen Sie ein Bild mit der AWS CLI**
+ Sie können ein Bild auch mit dem batch-delete-image Befehl **AWS ecr** aus Ihrem Repository löschen.

  ```
  AWS ecr batch-delete-image \
        --repository-name hello-world \
        --image-ids imageTag=latest
  ```  
**Example Beispielausgabe:**  

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```

**Löschen Sie ein Repository aus Ihrer Amazon ECR-Instance**

Es gibt zwei Methoden, um ein Repository aus VS Code zu löschen. Die erste Methode besteht darin, den AWS Explorer zu verwenden.

1. Erweitern Sie im AWS Explorer das **ECR-Menü**

1. Wählen Sie das Repository aus, das Sie löschen möchten, indem Sie das Kontextmenü (Rechtsklick) öffnen

1. Wählen Sie **Repository löschen...** Option zum ausgewählten Repository

**Löschen Sie ein Amazon ECR-Repository aus der CLI AWS**
+ Sie können ein Repository mit dem Befehl **AWS ecr delete-repository** löschen.
**Anmerkung**  
Standardmäßig können Sie ein Repository, das Bilder enthält, nicht löschen. Das Flag **--force** ermöglicht dies jedoch.

  ```
   AWS ecr delete-repository \
        --repository-name hello-world \
        --force
  ```  
**Example Beispielausgabe:**  

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```