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.
Création d'une image de conteneur à utiliser sur Amazon ECS
Amazon ECS utilise des images Docker dans les définitions de tâches pour lancer des conteneurs. Docker est une technologie qui fournit les outils nécessaires pour créer, exécuter, tester et déployer des applications distribuées sur des conteneurs.
L'objectif des étapes décrites ici est de vous guider lors de la création de votre première image Docker et de sa transmission vers Amazon ECR, qui est un registre de conteneurs, pour l'utiliser dans vos définitions de tâches Amazon ECS. Ce guide part du principe que vous possédez des connaissances élémentaires de Docker et de son fonctionnement. Pour plus d'informations sur Docker, consultez Qu'est-ce que Docker
Prérequis
Avant de commencer, assurez-vous de respecter les prérequis suivants :
-
Veillez à avoir terminé les étapes de configuration d'Amazon ECR. Pour plus d'informations, consultez la section Déplacement d'une image tout au long de son cycle de vie dans Amazon ECR dans le guide de l'utilisateur d'Amazon Elastic Container Registry.
-
Votre utilisateur dispose des autorisations IAM requises pour accéder au service Amazon ECR et l'utiliser. Pour en savoir plus, consultez Politiques gérées Amazon ECR.
-
Vous avez installé Docker. Pour les étapes d'installation de Docker pour Amazon Linux 2, consultez Installation de Docker sur 023 AL2. Pour tous les autres systèmes d'exploitation, consultez la documentation Docker dans Présentation de Docker Desktop
. -
Vous l'avez AWS CLI installé et configuré. Pour plus d'informations, voir Installation ou mise à jour vers la dernière version du AWS CLI dans le guide de AWS Command Line Interface l'utilisateur.
Si vous n'avez pas ou n'avez pas besoin d'un environnement de développement local et que vous préférez utiliser une EC2 instance Amazon pour utiliser Docker, nous vous proposons les étapes suivantes pour lancer une EC2 instance Amazon à l'aide d'Amazon Linux 2 et installer Docker Engine et la CLI 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 à Créer une image Docker.
Pour installer Docker sur une EC2 instance Amazon à l'aide d'une AMI Amazon Linux 2023
-
Lancez une instance avec la dernière AMI Amazon Linux 2023. Pour plus d'informations, consultez Lancer une EC2 instance à l'aide de l'assistant de lancement d'instance de la console dans le guide de EC2 l'utilisateur Amazon.
-
Connectez-vous à votre instance. Pour plus d'informations, consultez Connect to your EC2 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 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 groupedocker
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?
Créer une image Docker
Les définitions de tâches Amazon ECS utilisent des images Docker pour lancer des conteneurs sur des instances de conteneur dans vos clusters. Dans cette section, vous créez une image Docker d'une application Web simple, vous la testez sur votre système local ou sur une EC2 instance Amazon, puis vous envoyez l'image dans le registre de conteneurs Amazon ECR afin de pouvoir l'utiliser dans une définition de tâche Amazon ECS.
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 # Update installed packages and install Apache RUN yum update -y && \ yum install -y httpd # 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'EXPOSE
instruction signifie que le port 80 du conteneur est celui qui écoute, et l'CMD
instruction 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.
Si vous exécutez la commande sous macOS M1/Mx-chip, Use the --platform option "--platform linux/amd 64 ».
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.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 valeur DNS publique du serveur, qui est la même adresse que celle que vous utilisez pour vous connecter à l'instance via 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 la
machine-name
remplaçant par 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.
Transmettre votre image à Amazon Elastic Container Registry
Amazon ECR est un service de registre AWS Docker géré. Vous pouvez utiliser la CLI Docker pour transmettre, extraire et gérer les images dans vos référentiels Amazon ECR. Pour en savoir plus sur les produits Amazon ECR, consulter les études de cas présentées par des clients et FAQs consulter les pages détaillées des produits Amazon Elastic Container Registry
Pour étiqueter votre image et la transmettre à Amazon ECR
-
Créez un référentiel Amazon ECR pour stocker votre image
hello-world
. Notez la valeurrepositoryUri
dans la sortie.Remplacez
region
, par exemple Région AWS, par votreus-east-1
.aws ecr create-repository --repository-name
hello-repository
--regionregion
Sortie :
{ "repository": { "registryId": "
aws_account_id
", "repositoryName": "hello-repository", "repositoryArn": "arn:aws:ecr:region
:aws_account_id
:repository/hello-repository", "createdAt": 1505337806.0, "repositoryUri": "aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository" } } -
Étiquetez l'image
hello-world
avec la valeurrepositoryUri
de l'étape précédente.docker tag hello-world
aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository
-
Exécutez la commande aws ecr get-login-password. Spécifiez l'URI du registre sur lequel vous souhaitez vous authentifier. Pour plus d'informations, veuillez consulter Authentification de registre dans le Guide de l'utilisateur Amazon Elastic Container Registry.
aws ecr get-login-password --region
region
| docker login --username AWS --password-stdinaws_account_id
.dkr.ecr.region
.amazonaws.com.rproxy.govskope.caSortie :
Login Succeeded
Important
Si vous recevez une erreur, installez la dernière version de l' AWS CLI ou effectuez une mise à niveau vers cette version. Pour plus d'informations, voir Installation ou mise à jour vers la dernière version du AWS CLI dans le guide de AWS Command Line Interface l'utilisateur.
-
Transférez l'image dans Amazon ECR avec la valeur
repositoryUri
de l'étape précédente.docker push
aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository
Nettoyage
Pour continuer à créer une définition de tâche Amazon ECS et à lancer une tâche avec votre image de conteneur, passez à la page Étapes suivantes. Une fois que vous avez fini de tester votre image Amazon ECR, vous pouvez supprimer le référentiel afin qu'aucun stockage d'images ne vous soit facturé.
aws ecr delete-repository --repository-name
hello-repository
--regionregion
--force
Étapes suivantes
Vos définitions de tâches nécessitent un rôle d'exécution de tâche. Pour de plus amples informations, veuillez consulter Rôle IAM d'exécution de tâche Amazon ECS.
Après avoir créé et transféré votre image de conteneur vers Amazon ECR, vous pouvez utiliser cette image dans une définition de tâche. Pour plus d'informations, consultez les étapes suivantes :