

 AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestehende Kunden von AWS Cloud9 können den Dienst weiterhin wie gewohnt nutzen. [Weitere Informationen](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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 ECR in IDE AWS Cloud9
<a name="ecr"></a>

Amazon Elastic Container Registry (Amazon ECR) ist ein AWS verwalteter Container-Registry-Service, der sicher und skalierbar ist. Über den AWS Toolkit Explorer können Sie auf mehrere Amazon ECR-Servicefunktionen zugreifen:
+ Erstellen eines Repositorys.
+ Einen AWS App Runner Service für Ihr Repository oder Ihr markiertes Bild erstellen.
+ Zugreifen auf Image-Tag und Repository URIs oder ARNs.
+ Löschen von Bild-Tags und Repositorys.

Sie können auch über die AWS Cloud9 Konsole auf den gesamten Funktionsumfang von Amazon ECR zugreifen, indem Sie die AWS CLI und andere Plattformen installieren.

Weitere Informationen zu Amazon ECR finden Sie unter [Was ist Amazon Elastic Container Registry?](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) im Benutzerhandbuch von Amazon Elastic Container Registry.

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

Folgendes ist in der AWS Cloud9 IDE für AWS Cloud9 EC2 Amazon-Umgebungen vorinstalliert. Sie müssen über die AWS Cloud9 IDE auf den Amazon ECR-Service zugreifen. 

### IAM-Anmeldeinformationen
<a name="create-an-iam-user"></a>

Die IAM-Rolle, die Sie erstellt und für die Authentifizierung in der AWS -Konsole verwendet haben. Weitere Informationen über IAM finden Sie im [AWS Identity and Access Management -Benutzerhandbuch](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

### Docker-Konfiguration
<a name="create-an-iam-user"></a>

Docker ist in der AWS Cloud9 IDE für AWS Cloud9 EC2 Amazon-Umgebungen vorinstalliert. Weitere Informationen finden Sie unter [Install Docker Engine](https://docs.docker.com/engine/install/) (Docker-Engine installieren) in der Docker-Dokumentation.

### AWS Konfiguration der CLI-Version 2
<a name="create-an-iam-user"></a>

AWS CLI Version 2 ist in der AWS Cloud9 IDE für AWS Cloud9 EC2 Amazon-Umgebungen vorinstalliert. Weitere Informationen zur AWS CLI-Version 2 finden Sie unter [Installation, Aktualisierung und Deinstallation der AWS CLI-Version 2.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

**Topics**
+ [Voraussetzungen](#prereqs-awstoolkit-vscode-ecr)
+ [Amazon ECR mit AWS Cloud9 IDE verwenden](ecr-working.md)

# Arbeiten mit dem Amazon ECR-Service in AWS Cloud9
<a name="ecr-working"></a>

Sie können direkt über den AWS Explorer in der AWS Cloud9 IDE auf den Service Amazon Elastic Container Registry (Amazon ECR) zugreifen. Sie können Amazon ECR verwenden, um ein Programm-Image in ein Amazon-ECR-Repository zu verschieben. Gehen Sie folgendermaßen vor, um zu beginnen:

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, das sich in Ihrer Amazon-ECR-Instance befindet. 

1. Verschieben Sie das Image in Ihr Repository.

**Topics**
+ [Voraussetzungen](#prereqs-vscode-ecr)
+ [1. Erstellen einer Dockerfile-Datei](#dockerfile-ecr-cloud9toolkit)
+ [2. Erstellen des Images aus der Dockerfile-Datei](#build-docker-image)
+ [3. Erstellen eines neuen Repositorys](#create-repository)
+ [4. Verschieben, Ziehen und Löschen von Images](#push-image)

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

Bevor Sie die Amazon ECR-Funktion des AWS Toolkits für verwenden können, stellen Sie AWS Cloud9 zunächst sicher, dass Sie diese [Voraussetzungen](ecr.md#prereqs-awstoolkit-vscode-ecr) erfüllen. Diese Voraussetzungen sind in der AWS Cloud9 IDE für AWS Cloud9 EC2 Amazon-Umgebungen vorinstalliert und für den Zugriff auf Amazon ECR erforderlich.

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

Docker verwendet eine Datei, die als Dockerfile bezeichnet wird, um ein Image zu definieren, das verschoben und in einem Remote-Repository gespeichert werden kann. Bevor Sie ein Image in ein ECR-Repository hochladen können, erstellen Sie eine Dockerfile-Datei und dann ein Image daraus.

**Erstellen einer Dockerfile-Datei**

1. Um zu dem Verzeichnis zu navigieren, in dem Sie Ihre Dockerfile-Datei speichern möchten, wählen Sie in der linken Navigationsleiste Ihrer AWS Cloud9 -IDE die Option **Struktur umschalten** aus.

1. Erstellen Sie eine neue Datei mit dem Namen **Dockerfile**.
**Anmerkung**  
AWS Cloud9 IDE fordert Sie möglicherweise auf, einen Dateityp oder eine Dateierweiterung auszuwählen. Wenn dies der Fall ist, wählen Sie **Klartext**. AWS Cloud9 IDE 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 IDE AWS Cloud9**

Wenn Ihre Dockerfile-Datei eine Dateierweiterung hat, öffnen Sie das Kontextmenü (rechte Maustaste) für die Datei und entfernen Sie die Dateierweiterung. Eine Dockerfile-Datei mit Erweiterungen kann Konflikte mit bestimmten Versionen von Docker oder anderen zugehörigen Anwendungen verursachen.

Nachdem die Dateierweiterung aus Ihrer Dockerfile-Datei entfernt wurde:

1. Öffnen Sie das leere Dockerfile direkt in der IDE. AWS Cloud9 

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

   ```
   FROM ubuntu:22.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 ein Dockerfile, das ein Ubuntu 22.04-Image verwendet. Die **RUN**-Anweisungen aktualisieren die Paketcaches. Installieren Sie Softwarepakete für den Webserver und schreiben Sie dann den Inhalt „Hello World\$1“ 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.

## 2. Erstellen des Images aus der Dockerfile-Datei
<a name="build-docker-image"></a>

Die von Ihnen erstellte Dockerfile-Datei enthält die notwendigen Informationen, um ein Image für ein Programm zu erstellen. Bevor Sie dieses Image auf Ihre Amazon-ECR-Instance übertragen können, erstellen Sie zunächst das Image.

**Erstellen eines Images aus Der Dockerfile-Datei**

1. Sie können über die Docker-CLI oder eine CLI, die in Ihre Docker-Instanz integriert ist, in das Verzeichnis navigieren, das Ihre Dockerfile-Datei enthält.

1. Um das Image zu erstellen, das in Ihrer Dockerfile-Datei definiert ist, führen Sie den Befehl **Docker build** aus demselben Verzeichnis wie dem der Dockerfile-Datei aus.

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

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

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

   Die Ausgabe sieht wie folgt aus.

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

1. **Verwenden Sie den Befehl echo, um das neu erstellte Image auf Basis von Ubuntu 22.04 auszuführen.**
**Anmerkung**  
Dieser Schritt ist nicht erforderlich, um Ihr Image zu erstellen oder zu verschieben. Sie können jedoch sehen, wie das Programmabbild funktioniert, wenn es ausgeführt wird.

   ```
   FROM ubuntu:22.04
   CMD ["echo", "Hello from Docker in Cloud9"]
   ```

   Führen Sie dann die Dockerfile-Datei aus und erstellen Sie sie. Sie müssen diesen Befehl aus demselben Verzeichnis wie dem der dockerfile-Datei ausführen.

   ```
   docker build -t hello-world .
   docker run --rm hello-world
   ```  
**Example**  

   Die Ausgabe sieht wie folgt aus.

   ```
   Hello from Docker in Cloud9
   ```

   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 eines neuen Repositorys
<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.

**Erstellen eines neuen Amazon-ECR-Repositorys**

1. Wählen Sie in der AWS Cloud9 IDE-Navigationsleiste das **AWS Toolkit-Symbol** aus.

1. Erweitern Sie das Menü „ AWS Explorer“.

1. Suchen Sie die Standardeinstellung AWS-Region , die mit Ihrem AWS-Konto verknüpft ist. Wählen Sie ihn dann aus, um eine Liste der Dienste anzuzeigen, die über die AWS Cloud9 IDE bereitgestellt werden.

1. Öffnen Sie das Kontextmenü (rechte Maustaste) für die **ECR**-Option, um den Prozess **Neues Repository erstellen** zu starten. Wählen Sie dann **Create Repository (Repository erstellen)** aus.

1. Folgen Sie der Aufforderung, 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. Verschieben, Ziehen und Löschen von Images
<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. Wenn Sie den AWS Explorer mit Docker und der AWS CLI verwenden, können Sie außerdem Folgendes tun:
+ Ein Image aus Ihrem Repository abrufen
+ Ein Bild, das in deinem Repository gespeichert ist, löschen
+ Ihr Repository löschen

**Authentifizieren von 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 Terminal in Ihrer AWS Cloud9 IDE. 

1. Verwenden Sie **get-login-password**diese Methode, um sich bei Ihrer privaten ECR-Registrierung zu authentifizieren, und geben Sie Ihre Region und AWS-Konto ID ein.

   ```
   aws ecr get-login-password \
       --region <region> \
   | docker login \
       --username AWS \
       --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```
**Wichtig**  
Ersetzen Sie im vorherigen Befehl „**region**„ und das „**AWS\$1account\$1id**„ durch Informationen, die für Ihr AWS-Konto spezifisch sind. *us-east-1* ist ein gültiger **region**-Wert.

**Markieren und Verschieben eines Image in Ihr Repository**

Nachdem Sie Docker mit Ihrer Instanz von authentifiziert haben AWS, übertragen Sie ein Image 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**  

   Die Ausgabe sieht wie folgt aus.

   ```
   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. Verschieben Sie das markierte Image mit dem Befehl **Docker push** in Ihr Repository.
**Wichtig**  
Stellen Sie sicher, dass der Name Ihres lokalen Repositorys mit dem Ihres AWS EC2 Amazon-Repositorys übereinstimmt. In diesem Beispiel müssen beide Repositorys den Namen „`hello-world`“ haben. Weitere Informationen zum Verschieben von Images mit Docker finden Sie unter [Verschieben eines Docker-Images](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).

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

   Die Ausgabe sieht wie folgt aus.

   ```
   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, aktualisieren Sie das AWS Toolkit, indem Sie auf der Registerkarte **Explorer die Option AWS Explorer aktualisieren** wählen. Es ist dann im AWS Explorer-Menü der AWS Cloud9 IDE sichtbar.

**Abrufen eines Image von Amazon ECR**
+ 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**  

  Die Ausgabe sieht wie folgt aus.

  ```
  azonaws.com/hello-world:latest
  latest: Pulling from hello-world
  Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e
  Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
  ```

**Löschen eines Images aus Ihrem Amazon-ECR-Repository**

Es gibt zwei Methoden, um ein Bild aus der AWS Cloud9 IDE 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 Image löschen möchten.

1. Öffnen Sie das Kontextmenü (rechte Maustaste) für das Image-Tag, das mit dem Image verknüpft ist, das Sie löschen möchten.

1. Wenn Sie alle gespeicherten Images löschen möchten, die mit diesem Tag verknüpft sind, wählen Sie **Delete Tag... (Tag löschen...)** aus.

**Löschen eines Images 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**  

  Die Ausgabe sieht wie folgt aus.

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

**Löschen eines Repositorys aus Ihrer Amazon-ECR-Instance**

Es gibt zwei Methoden, um ein Repository aus der AWS Cloud9 IDE zu löschen. Die erste Methode ist die Verwendung des AWS Explorers:

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

1. Öffnen Sie das Kontextmenü für die Abfrage (rechte Maustaste), mit der Sie arbeiten möchten.

1. Wählen Sie **Delete Repository... (Repository löschen...)** aus.

**Löschen eines Amazon ECR-Repositorys aus der CLI AWS**
+ Sie können ein Repository mit dem Befehl **AWS ecr delete-repository** löschen.
**Anmerkung**  
Normalerweise können Sie ein Repository nicht löschen, ohne zuerst die darin enthaltenen Images zu löschen. Wenn Sie jedoch das **--force**-Flag hinzufügen, können Sie ein Repository und alle seine Images in einem Schritt löschen.

  ```
          aws ecr delete-repository \
        --repository-name hello-world \
        --force
  ```  
**Example**  

  Die Ausgabe sieht wie folgt aus.

  ```
  --repository-name hello-world --force
  {
      "repository": {
          "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", 
          "registryId": "922327013870", 
          "imageTagMutability": "MUTABLE", 
          "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", 
          "repositoryName": "hello-world", 
          "createdAt": 1664469874.0
      }
  }
  ```