Arbeiten mit dem ECR Amazon-Service in AWS Cloud9 - AWS Cloud9

AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS Cloud9 können den Service weiterhin wie gewohnt nutzen. Weitere Informationen

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 dem ECR Amazon-Service in AWS Cloud9

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

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

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

  3. Erstellen Sie ein Repository innerhalb Ihrer ECR Amazon-Instance.

  4. Verschieben Sie das Image in Ihr Repository.

Voraussetzungen

Bevor Sie die ECR Amazon-Funktion des AWS Toolkits für verwenden können AWS Cloud9, stellen Sie zunächst sicher, dass Sie diese Voraussetzungen erfüllen. Diese Voraussetzungen sind in den EC2 Umgebungen AWS Cloud9 IDE für AWS Cloud9 Amazon vorinstalliert und für den Zugriff auf Amazon ECR erforderlich.

1. Erstellen einer Dockerfile-Datei

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 ein Dockerfile und dann ein Image aus diesem Dockerfile.

Erstellen einer Dockerfile-Datei
  1. Um zu dem Verzeichnis zu navigieren, in dem Sie Ihr Dockerfile speichern möchten, wählen Sie die Option Toggle Tree in der linken Navigationsleiste Ihres. AWS Cloud9 IDE

  2. Erstellen Sie eine neue Datei mit dem Namen Dockerfile.

    Anmerkung

    AWS Cloud9 IDEfordert Sie möglicherweise auf, einen Dateityp oder eine Dateierweiterung auszuwählen. Wenn dies der Fall ist, wählen Sie Klartext. AWS Cloud9 IDEhat 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 AWS Cloud9 IDE

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. AWS Cloud9 IDE

  2. Kopieren Sie den Inhalt des folgenden Beispiels in Ihre Dockerfile-Datei.

    Beispiel 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 RUNAnweisungen aktualisieren die Paket-Caches. Installieren Sie Softwarepakete für den Webserver und schreiben Sie dann den Inhalt „Hello World!“ in das Dokumenten-Stammverzeichnis des Webservers. Die EXPOSEAnweisung macht Port 80 auf dem Container verfügbar und die CMDAnweisung startet den Webserver.

  3. Speichern Sie Ihre Dockerfile-Datei.

2. Erstellen des Images aus der Dockerfile-Datei

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 ECR Amazon-Instance übertragen können, müssen Sie zunächst das Image erstellen.

Erstellen eines Images aus Der Dockerfile-Datei
  1. Um in das Verzeichnis zu navigieren, das Ihr Dockerfile enthält, verwenden Sie den Docker CLI oder einenCLI, der in Ihre Docker-Instanz integriert ist.

  2. 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 .
  3. Führen Sie docker images aus, um zu überprüfen, ob das Image korrekt erstellt wurde.

    docker images --filter reference=hello-world

    Die Ausgabe sieht wie folgt aus.

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. 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

    Die Ausgabe sieht wie folgt aus.

    Hello from Docker in Cloud9

    Weitere Informationen zum Befehl Docker run finden Sie in der Docker run reference auf der Docker-Website.

3. Erstellen eines neuen Repositorys

Um Ihr Bild in Ihre ECR Amazon-Instance hochzuladen, erstellen Sie ein neues Repository, in dem es gespeichert werden kann.

Neues ECR Amazon-Repository erstellen
  1. Wählen Sie in der AWS Cloud9 IDE Navigationsleiste das AWS Toolkit-Symbol aus.

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

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

  4. Öffnen Sie das Kontextmenü (Rechtsklick) für die ECROption, den Prozess Neues Repository erstellen zu starten. Wählen Sie dann Create Repository (Repository erstellen) aus.

  5. Folgen Sie der Aufforderung, um den Vorgang abzuschließen.

  6. Nachdem der Vorgang abgeschlossen ist, können Sie über den ECRAbschnitt des AWS Explorer-Menüs auf Ihr neues Repository zugreifen.

4. Verschieben, Ziehen und Löschen von Images

Nachdem Sie ein Image aus Ihrem Dockerfile erstellt und ein Repository erstellt haben, können Sie Ihr Image in Ihr ECR Amazon-Repository übertragen. Wenn Sie den AWS Explorer mit Docker und dem verwenden AWS CLI, 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 - und Docker-Instances ist eine Authentifizierung erforderlich. So authentifizieren Sie Docker für Ihre Registry:

  1. Öffnen Sie ein Terminal in Ihrem AWS Cloud9 IDE.

  2. Verwenden Sie get-login-passworddiese 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_account_id„ 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

    Die Ausgabe sieht wie folgt aus.

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  2. 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
  3. 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.

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

    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ü unter sichtbar. AWS Cloud9 IDE

Ein Bild von Amazon abrufen 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

    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
Ein Bild aus Ihrem ECR Amazon-Repository löschen

Es gibt zwei Methoden, um ein Bild von zu löschen AWS Cloud9 IDE. Die erste Methode ist die Verwendung des AWS Explorers.

  1. Erweitern Sie im AWS Explorer das ECRMenü.

  2. Erweitern Sie das Repository, aus dem Sie ein Image löschen möchten.

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

  4. 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 Bilds mit dem 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

    Die Ausgabe sieht wie folgt aus.

    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
Löschen eines Repositorys aus Ihrer ECR Amazon-Instance

Es gibt zwei Methoden zum Löschen eines Repositorys von AWS Cloud9 IDE. Die erste Methode ist die Verwendung des AWS Explorers:

  1. Erweitern Sie im AWS Explorer das ECRMenü.

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

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

Löschen eines ECR Amazon-Repositorys aus dem AWS CLI
  • 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

    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 } }