Déplacement d'une image tout au long de son cycle de vie dans Amazon ECR - Amazon ECR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déplacement d'une image tout au long de son cycle de vie dans Amazon ECR

Si vous utilisez Amazon ECR pour la première fois, suivez les étapes suivantes avec la CLI Docker et AWS CLI pour créer un exemple d'image, vous authentifier auprès du registre par défaut et créer un référentiel privé. Transférez ensuite une image vers le dépôt privé et extrayez-la de celui-ci. Lorsque vous avez terminé avec l'exemple d'image, supprimez-le et le référentiel.

Pour utiliser le AWS Management Console au lieu du AWS CLI, voirCréation d'un référentiel privé Amazon ECR pour stocker des images.

Pour plus d'informations sur les autres outils disponibles pour gérer vos AWS ressources, notamment les différents AWS SDK, boîtes à outils IDE et outils de ligne de PowerShell commande Windows, consultez http://aws.amazon.com/tools/.

Prérequis

Si la dernière version AWS CLI de Docker n'est pas installée et prête à être utilisée, procédez comme suit pour installer ces deux outils.

Installez le AWS CLI

Pour l'utiliser AWS CLI avec Amazon ECR, installez la dernière AWS CLI version. Pour plus d'informations, consultez Installation de la AWS Command Line Interface dans le Guide de l'utilisateur de la AWS Command Line Interface .

Installer Docker

Docker est disponible sur plusieurs systèmes d'exploitation, notamment les distributions Linux les plus modernes, comme Ubuntu et même MacOS et Windows. Pour en savoir plus sur la façon d'installer Docker sur votre système d'exploitation, consultez le guide d'installation Docker.

Vous n'avez pas besoin d'un système de développement local pour utiliser Docker. Si vous utilisez déjà Amazon EC2, vous pouvez lancer une instance Amazon Linux 2023 et installer Docker pour démarrer.

Si vous avez déjà installé Docker, passez à Étape 1 : Créer une image Docker.

Pour installer Docker sur une instance Amazon EC2 à l'aide d'une AMI Amazon Linux 2023
  1. Lancez une instance avec la dernière AMI Amazon Linux 2023. Pour plus d'informations, consultez la section Lancement d'une instance dans le guide de l'utilisateur Amazon EC2.

  2. Connectez-vous à votre instance. Pour plus d'informations, consultez Connect to your Linux instance dans le guide de l'utilisateur Amazon EC2.

  3. Mettez à jour les packages installés et le cache du package sur votre instance.

    sudo yum update -y
  4. Installez le package de Docker Community Edition le plus récent.

    sudo yum install docker
  5. Lancez le service Docker.

    sudo service docker start
  6. Ajoutez le ec2-user au groupe docker afin de pouvoir exécuter les commandes Docker sans utiliser le sudo.

    sudo usermod -a -G docker ec2-user
  7. Déconnectez-vous et reconnectez-vous pour récupérer les nouvelles autorisations de groupe docker. Vous pouvez effectuer ces opérations en fermant votre fenêtre de terminal SSH actuelle et en vous reconnectant à votre instance dans une nouvelle fenêtre. Votre nouvelle session SSH disposera des autorisations de groupe docker appropriées.

  8. Vérifiez que ec2-user peut exécuter les commandes Docker sans sudo.

    docker info
    Note

    Dans certains cas, vous devrez peut-être redémarrer votre instance pour autoriser ec2-user à accéder au démon Docker. Essayez de redémarrer l'instance si vous voyez l'erreur suivante :

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Étape 1 : Créer une image Docker

Au cours de cette étape, vous créez une image Docker pour une application web simple et vous la testez sur votre système local ou l'instance Amazon EC2.

Créer une image Docker d'une application web simple
  1. Créez un fichier, appelé Dockerfile. Un fichier Dockerfile est un manifeste qui décrit l'image de base à utiliser pour votre image Docker et ce que vous voulez installer et exécuter dessus. Pour en savoir plus sur les fichiers Dockerfile, consultez la référence Dockerfile.

    touch Dockerfile
  2. Modifiez le Dockerfile que vous venez de créer et ajoutez le contenu qui suit.

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest # Install dependencies RUN yum update -y && \ yum install -y httpd # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \ echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh

    Ce fichier Dockerfile utilise l'image publique Amazon Linux 2 hébergée sur Amazon ECR Public. Les instructions RUN mettent à jour les caches du package, installent certains packages logiciels pour le serveur web et écrivent ensuite le message « Hello World! » contenu à la racine du document des serveurs Web. L'instruction EXPOSE expose le port 80 sur le conteneur et l'instruction CMD démarre le serveur Web.

  3. Créez l'image Docker à partir de votre fichier Dockerfile.

    Note

    Certaines versions de Docker exigent le chemin d'accès complet à votre Dockerfile dans la commande suivante au lieu du chemin d'accès relatif indiqué ci-après.

    docker build -t hello-world .
  4. Répertoriez l'image de votre conteneur.

    docker images --filter reference=hello-world

    Sortie :

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              e9ffedc8c286        4 minutes ago       194MB
  5. Exécutez la nouvelle image. L'option -p 80:80 mappe le port exposé 80 du conteneur au port 80 du système hôte. Pour en savoir plus sur docker run, accédez à Docker run reference.

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

    La sortie du serveur Web Apache est affichée dans la fenêtre du terminal. Vous pouvez ignorer le message « Could not reliably determine the fully qualified domain name ».

  6. Ouvrez un navigateur et pointez vers le serveur qui exécute Docker et qui héberge votre conteneur.

    • Si vous utilisez une instance EC2, il s'agit de la valeur de DNS public du serveur, c'est-à-dire la même adresse que celle que vous utilisez pour vous connecter à l'instance avec le protocole SSH. Assurez-vous que le groupe de sécurité de votre instance autorise le trafic entrant sur le port 80.

    • Si vous exécutez Docker localement, pointez votre navigateur vers http://localhost/.

    • Si vous l'utilisez docker-machine sur un ordinateur Windows ou Mac, recherchez l'adresse IP de la VirtualBox machine virtuelle hébergeant Docker à l'aide de la docker-machine ip commande, en remplaçant machine-name par le nom de la machine docker que vous utilisez.

      docker-machine ip machine-name

    Vous devriez voir une page web avec « Hello, World! » .

  7. Arrêtez le conteneur Docker en appuyant sur Ctrl + c.

Étape 2 : Vous authentifier auprès de votre registre par défaut

Après avoir installé et configuré le AWS CLI, authentifiez la CLI Docker dans votre registre par défaut. Ainsi, la commande docker peut pousser et extraire des images avec Amazon ECR. AWS CLI Fournit une get-login-password commande pour simplifier le processus d'authentification.

Pour authentifier Docker auprès d'un registre Amazon ECR avec get-login-password, exécutez la commande. aws ecr get-login-password Lorsque vous passez le jeton d'authentification à la commande docker login, utilisez la valeur AWS pour le nom d'utilisateur et spécifiez l'URI de registre Amazon ECR auquel vous souhaitez vous authentifier. Si vous vous authentifiez sur plusieurs registres, vous devrez répéter la commande pour chacun d'eux.

Important

Si vous recevez une erreur, installez la dernière version de la CLI ou effectuez une mise à niveau vers cette version AWS CLI. Pour en savoir plus, consultez Installer la AWS Command Line Interface dans le guide de l'utilisateur AWS Command Line Interface .

  • get-login-password (AWS CLI)

    aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  • Obtenez ECR (LoginCommand)AWS Tools for Windows PowerShell

    (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

Étape 3 : Créer un référentiel

Maintenant que vous disposez d'une image à transmettre à Amazon ECR, vous devez créer un référentiel afin de la contenir. Dans cet exemple, vous créez un référentiel nommé hello-repository dans lequel vous pourrez transmettre l'image hello-world:latest. Pour créer un référentiel, exécutez la commande suivante :

aws ecr create-repository \ --repository-name hello-repository \ --region region

Étape 4 : Transmettre une image à Amazon ECR

Vous pouvez maintenant transmettre l'image au référentiel Amazon ECR que vous avez créé à la section précédente. Utilisez la docker CLI pour envoyer des images une fois que les conditions préalables suivantes sont remplies :

  • La version minimale de docker est installée : 1.7.

  • Le jeton d'autorisation Amazon ECR a été configuré avecdocker login.

  • Le référentiel Amazon ECR existe et l'utilisateur dispose d'un accès lui permettant de transmettre des images dans le référentiel.

Une fois ces conditions remplies, vous pouvez transmettre l'image au référentiel qui vient d'être créé dans le registre par défaut de votre compte.

Étiqueter et transmettre une image à Amazon ECR
  1. Répertoriez les images que vous avez stockées localement afin d'identifier l'image à étiqueter et à transmettre.

    docker images

    Sortie :

    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
  2. Étiquetez l'image à transmettre à votre référentiel.

    docker tag hello-world:latest aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
  3. Transmettez l'image.

    docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository

    Sortie :

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

Étape 5 : Extraire une image d'Amazon ECR

Une fois que votre image a été transférée vers votre référentiel Amazon ECR, vous pouvez l'extraire d'autres emplacements. Utilisez la docker CLI pour extraire des images une fois que les conditions préalables suivantes sont remplies :

  • La version minimale de docker est installée : 1.7.

  • Le jeton d'autorisation Amazon ECR a été configuré avecdocker login.

  • Le référentiel Amazon ECR existe et l'utilisateur dispose d'un accès lui permettant d'extraire des images du référentiel.

Une fois ces conditions remplies, vous pouvez extraire l'image. Pour extraire votre exemple d'image d'Amazon ECR, exécutez la commande suivante :

docker pull aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest

Sortie :

latest: Pulling from hello-repository
0a85502c06c9: Pull complete
0998bf8fb9e9: Pull complete
a6785352b25c: Pull complete
e9ae3c220b23: Pull complete
Digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636EXAMPLE
Status: Downloaded newer image for aws_account_id.dkr.region.amazonaws.com/hello-repository:latest

Étape 6 : Supprimer une image

Si vous n'avez plus besoin d'une image dans l'un de vos référentiels, vous pouvez la supprimer. Pour supprimer une image, spécifiez le référentiel dans lequel elle se trouve et une imageDigest valeur imageTag ou pour l'image. L'exemple suivant supprime une image du hello-repository référentiel avec la balise latest image. Pour supprimer votre exemple d'image du référentiel, exécutez la commande suivante :

aws ecr batch-delete-image \ --repository-name hello-repository \ --image-ids imageTag=latest \ --region region

Étape 7 : Supprimer un référentiel

Si vous n'avez plus besoin d'un référentiel complet d'images, vous pouvez le supprimer. L'exemple suivant utilise l'--forceindicateur pour supprimer un référentiel contenant des images. Pour supprimer un référentiel et toutes les images qu'il contient, exécutez la commande suivante :

aws ecr delete-repository \ --repository-name hello-repository \ --force \ --region region