Création d'une image de conteneur à utiliser sur Amazon ECS - Amazon Elastic Container Service

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 ? et la documentation Docker.

Prérequis

Avant de commencer, assurez-vous de respecter les prérequis suivants :

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
  1. 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.

  2. Connectez-vous à votre instance. Pour plus d'informations, consultez Connect to your EC2 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 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?

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
  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 # 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'EXPOSEinstruction signifie que le port 80 du conteneur est celui qui écoute, et l'CMDinstruction 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.

    Si vous exécutez la commande sous macOS M1/Mx-chip, Use the --platform option "--platform linux/amd 64 ».

    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.

    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 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! » .

  7. 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
  1. Créez un référentiel Amazon ECR pour stocker votre image hello-world. Notez la valeur repositoryUri dans la sortie.

    Remplacezregion, par exemple Région AWS, par votreus-east-1.

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

    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"
        }
    }
  2. Étiquetez l'image hello-world avec la valeur repositoryUri de l'étape précédente.

    docker tag hello-world aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
  3. 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-stdin aws_account_id.dkr.ecr.region.amazonaws.com

    Sortie :

    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.

  4. 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 --region region --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 :