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
-
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.
-
Connectez-vous à votre instance. Pour plus d'informations, consultez Connect to Your Linux Instance dans le guide de EC2 l'utilisateur Amazon.
-
Mettez à jour les packages installés et le cache du package sur votre instance.
sudo yum update -y
-
Installez le package de Docker Community Edition le plus récent.
sudo yum install docker
-
Lancez le service Docker.
sudo service docker start
-
Ajoutez le
ec2-user
au groupedocker
afin de pouvoir exécuter les commandes Docker sans utiliser lesudo
.sudo usermod -a -G docker ec2-user
-
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 dedocker
groupe appropriées. -
Vérifiez que
ec2-user
peut exécuter les commandes Docker sanssudo
.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
-
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
-
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'instructionEXPOSE
expose le port 80 sur le conteneur et l'instructionCMD
démarre le serveur Web. -
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 .
-
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
-
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
». -
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! » .
-
-
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
\ --regionregion
É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
.dkr.ecr.aws_account_id
region
.amazonaws.com -
Obtenez- ECRLoginCommand (AWS Tools for Windows PowerShell)
(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin
.dkr.ecr.aws_account_id
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
-
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
-
Étiquetez l'image à transmettre à votre référentiel.
docker tag hello-world:latest
aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository -
Transmettez l'image.
docker push
aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository:latestSortie :
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 foraws_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'--force
indicateur 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