Déplacer une image tout au long de son cycle de vie sur 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éplacer une image tout au long de son cycle de vie sur Amazon ECR

Si vous utilisez Amazon ECR pour la première fois, suivez les étapes suivantes avec le Docker CLI et le 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 ECR privé Amazon pour stocker des images.

Pour plus d'informations sur les autres outils disponibles pour gérer vos AWS ressources, notamment les différentes AWS SDKs IDE boîtes à outils et les 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 AmazonECR, 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 EC2 déjà Amazon, vous pouvez lancer une instance Amazon Linux 2023 et installer Docker pour commencer.

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

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

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

  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 y parvenir en fermant votre fenêtre de SSH terminal actuelle et en vous reconnectant à votre instance dans une nouvelle fenêtre. Votre nouvelle SSH session bénéficiera des autorisations de docker groupe 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 d'une application Web simple et vous la testez sur votre système local ou sur une EC2 instance Amazon.

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 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 EC2 instance, il s'agit de la DNS valeur publique du serveur, qui est la même adresse que celle que vous utilisez pour vous connecter à l'instanceSSH. 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 avec la docker-machine ip commande, en remplaçant machine-name avec 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 : Création d'un référentiel

Maintenant que vous avez une image à envoyer à AmazonECR, vous devez créer un référentiel pour la conserver. 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 3 : Authentifiez-vous auprès de votre registre par défaut

Après avoir installé et configuré le AWS CLI, authentifiez le Docker CLI dans votre registre par défaut. De cette façon, la docker commande peut envoyer et extraire des images avec AmazonECR. AWS CLI Fournit une get-login-password commande pour simplifier le processus d'authentification.

Pour authentifier Docker auprès d'un ECR registre Amazon avec get-login-password, exécutez la aws ecr get-login-password commande. Lorsque vous transmettez le jeton d'authentification à la docker login commande, utilisez la valeur AWS du nom d'utilisateur et spécifiez le ECR registre Amazon auprès URI duquel 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 plus d'informations, consultez Installation d' 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- ECRLoginCommand (AWS Tools for Windows PowerShell)

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

Étape 4 : envoyer une image à Amazon ECR

Vous pouvez désormais transférer votre image vers le ECR référentiel Amazon que vous avez créé dans la section précédente. Utilisez le 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 ECR d'autorisation Amazon a été configuré avecdocker login.

  • Le ECR référentiel Amazon existe et l'utilisateur peut y accéder par push.

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.

Pour étiqueter et envoyer une image sur 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:latest

    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 depuis Amazon ECR

Une fois que votre image a été transférée vers votre ECR référentiel Amazon, vous pouvez l'extraire d'autres emplacements. Utilisez le 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 ECR d'autorisation Amazon a été configuré avecdocker login.

  • Le ECR référentiel Amazon existe et l'utilisateur peut le récupérer.

Une fois ces conditions remplies, vous pouvez extraire l'image. Pour extraire votre exemple d'image depuis AmazonECR, 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