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.
Einen Docker-Container im Inneren erstellen CloudShell und in ein ECR Amazon-Repository verschieben
Dieses Tutorial zeigt Ihnen, wie Sie einen Docker-Container definieren und erstellen AWS CloudShell und ihn in ein ECR Amazon-Repository übertragen.
Voraussetzungen
Sie müssen über die erforderlichen Berechtigungen verfügen, um ein ECR Amazon-Repository zu erstellen und dorthin zu pushen. Weitere Informationen zu Repositorys bei Amazon ECR finden Sie unter ECRPrivate Amazon-Repositorys im ECRAmazon-Benutzerhandbuch. Weitere Informationen zu den Berechtigungen, die für die Übertragung von Bildern mit Amazon erforderlich sindECR, finden Sie unter Erforderliche IAM Berechtigungen für die Übertragung von Bildern im ECRAmazon-Benutzerhandbuch.
Ablauf des Tutorials
Das folgende Tutorial beschreibt, wie Sie die CloudShell Schnittstelle verwenden, um einen Docker-Container zu erstellen und ihn in ein ECR Amazon-Repository zu übertragen.
Erstellen Sie einen neuen Ordner in Ihrem Home-Verzeichnis.
mkdir ~/docker-cli-tutorial
Navigieren Sie zu dem Ordner, den Sie erstellt haben.
cd ~/docker-cli-tutorial
Erstellen Sie ein leeres Dockerfile.
touch Dockerfile
Öffnen Sie die Datei beispielsweise
nano Dockerfile
mit einem Texteditor und fügen Sie den folgenden Inhalt ein.# Dockerfile # Base this container on the latest Amazon Linux version FROM public.ecr.aws/amazonlinux/amazonlinux:latest # Install the cowsay binary RUN dnf install --assumeyes cowsay # Default entrypoint binary ENTRYPOINT [ "cowsay" ] # Default argument for the cowsay entrypoint CMD [ "Hello, World!" ]
Das Dockerfile kann jetzt erstellt werden. Erstellen Sie den Container, indem Sie ihn ausführen.
docker build
Kennzeichnen Sie den Container mit einem easy-to-type Namen, der in future Befehlen verwendet werden kann.docker build --tag test-container .
Stellen Sie sicher, dass Sie den letzten Punkt (
.
) angeben.Sie können den Container jetzt testen, um zu überprüfen, ob er korrekt ausgeführt wird. AWS CloudShell
docker container run test-container
Da Sie nun über einen funktionierenden Docker-Container verfügen, müssen Sie ihn in ein ECR Amazon-Repository verschieben. Wenn Sie bereits über ein ECR Amazon-Repository verfügen, können Sie diesen Schritt überspringen.
Führen Sie den folgenden Befehl aus, um ein ECR Amazon-Repository für dieses Tutorial zu erstellen.
ECR_REPO_NAME=docker-tutorial-repo aws ecr create-repository --repository-name ${ECR_REPO_NAME}
Nachdem Sie das ECR Amazon-Repository erstellt haben, können Sie den Docker-Container dorthin verschieben.
Führen Sie den folgenden Befehl aus, um die ECR Amazon-Anmeldeinformationen für Docker abzurufen.
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text) ECR_URL=${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com aws ecr get-login-password | docker login --username AWS --password-stdin ${ECR_URL}
Anmerkung
Wenn die AWS_REGION Umgebungsvariable in Ihrer nicht festgelegt ist CloudShell oder Sie mit Ressourcen in anderen interagieren möchten AWS-Regionen, führen Sie den folgenden Befehl aus:
AWS_REGION=<your-desired-region>
Taggen Sie das Bild mit dem ECR Amazon-Ziel-Repository und übertragen Sie es dann in dieses Repository.
docker tag test-container ${ECR_URL}/${ECR_REPO_NAME} docker push ${ECR_URL}/${ECR_REPO_NAME}
Wenn Sie beim Durcharbeiten dieses Tutorials auf Fehler oder Probleme stoßen, finden Sie im Abschnitt zur Fehlerbehebung in diesem Handbuch Hilfe.
Bereinigen
Sie haben Ihren Docker-Container jetzt erfolgreich in Ihrem ECR Amazon-Repository bereitgestellt. Führen Sie den folgenden Befehl aus, um die in diesem Tutorial erstellten Dateien aus Ihrer AWS CloudShell Umgebung zu entfernen.
cd ~ rm -rf ~/docker-cli-tutorial
Löschen Sie das ECR Amazon-Repository.
aws ecr delete-repository --force --repository-name ${ECR_REPO_NAME}