

 AWS Cloud9 n'est plus disponible pour les nouveaux clients. Les clients existants d’ AWS Cloud9 peuvent continuer à l’utiliser normalement. [En savoir plus](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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.

# Utilisation d'Amazon ECR dans l'IDE AWS Cloud9
<a name="ecr"></a>

Amazon Elastic Container Registry (Amazon ECR) est AWS un service géré de registre de conteneurs sécurisé et évolutif. Plusieurs fonctions du service Amazon ECR sont accessibles depuis le AWS Toolkit Explorer :
+ Création d'un référentiel.
+ Création d'un AWS App Runner service pour votre référentiel ou votre image balisée.
+ Accès à la balise d'image et au référentiel URIs ou ARNs.
+ Suppression des balises d'image et des référentiels.

Vous pouvez également accéder à la gamme complète des fonctions Amazon ECR via la AWS Cloud9 console en installant la AWS CLI et d'autres plateformes.

Pour plus d'informations sur Amazon ECR, veuillez consulter [Qu'est-ce qu'Amazon ECR ?](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) dans le guide de l'utilisateur Amazon Elastic Container Registry.

## Prérequis
<a name="prereqs-awstoolkit-vscode-ecr"></a>

Les éléments suivants sont préinstallés dans l' AWS Cloud9 IDE pour les EC2 environnements AWS Cloud9 Amazon. Ils sont tenus d'accéder au service Amazon ECR depuis l' AWS Cloud9 IDE. 

### Informations d'identification IAM
<a name="create-an-iam-user"></a>

Le rôle IAM que vous avez créé et utilisé pour l'authentification dans la console AWS . Pour en savoir plus sur IAM, consultez le [guide de l'utilisateur Gestion des identités et des accès AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

### Configuration Docker
<a name="create-an-iam-user"></a>

Docker est préinstallé dans l' AWS Cloud9 IDE pour les environnements AWS Cloud9 Amazon EC2 . Pour obtenir des informations générales sur Docker, veuillez consulter [Install Docker Engine (Installer le moteur Docker)](https://docs.docker.com/engine/install/).

### AWS Configuration de la version 2 de la CLI
<a name="create-an-iam-user"></a>

AWS La version 2 de la CLI est préinstallée dans l' AWS Cloud9 IDE pour les EC2 environnements AWS Cloud9 Amazon. Pour plus d'informations sur la version 2 de la AWS CLI, voir [Installation, mise à jour et désinstallation de la AWS CLI version 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**Topics**
+ [Prérequis](#prereqs-awstoolkit-vscode-ecr)
+ [Utilisation d'Amazon ECR avec IDE AWS Cloud9](ecr-working.md)

# Utilisation du service Amazon ECR dans AWS Cloud9
<a name="ecr-working"></a>

Vous pouvez accéder au service Amazon Elastic Container Registry (Amazon ECR) directement depuis l'explorateur AWS dans l'IDE. AWS Cloud9 Vous pouvez utiliser Amazon ECR pour transmettre une image de programme à un référentiel Amazon ECR. Pour commencer, procédez comme suit :

1. Créez un Dockerfile contenant les informations nécessaires à la création d'une image.

1. Créez une image à partir de ce Dockerfile et balisez l'image pour le traitement.

1. Créez un référentiel qui se trouve à l'intérieur de votre instance Amazon ECR. 

1. Transmettez l'image balisée à votre référentiel.

**Topics**
+ [Prérequis](#prereqs-vscode-ecr)
+ [1. Création d'un fichier Dockerfile](#dockerfile-ecr-cloud9toolkit)
+ [2. Création de votre image à partir de votre Dockerfile](#build-docker-image)
+ [3. Création d'un nouveau référentiel](#create-repository)
+ [4. Pousser, extraire et supprimer des images](#push-image)

## Prérequis
<a name="prereqs-vscode-ecr"></a>

Avant de pouvoir utiliser la fonctionnalité Amazon ECR du AWS Toolkit pour AWS Cloud9, assurez-vous que vous remplissez d'abord ces [conditions préalables](ecr.md#prereqs-awstoolkit-vscode-ecr). Ces prérequis sont préinstallés dans l' AWS Cloud9 IDE pour les EC2 environnements AWS Cloud9 Amazon et sont nécessaires pour accéder à Amazon ECR.

## 1. Création d'un fichier Dockerfile
<a name="dockerfile-ecr-cloud9toolkit"></a>

Docker utilise un fichier appelé Dockerfile pour définir une image qui peut être transférée et stockée sur un référentiel distant. Avant de pouvoir télécharger une image vers un référentiel ECR, créez un Dockerfile, puis créez une image à partir de ce Dockerfile.

**Création d'un fichier Dockerfile**

1. Pour accéder au répertoire dans lequel vous souhaitez stocker votre Dockerfile, choisissez l'option **Toggle Tree (Basculer l'arborescence)** dans la barre de navigation de gauche de votre IDE AWS Cloud9 .

1. Créez un fichier nommé **Dockerfile**.
**Note**  
AWS Cloud9 L'IDE peut vous demander de sélectionner un type de fichier ou une extension de fichier. Dans ce cas, sélectionnez du **texte brut**. AWS Cloud9 L'IDE possède une extension « dockerfile ». Cependant, nous vous déconseillons de l'utiliser. Cela est dû au fait que l'extension peut provoquer des conflits avec certaines versions de Docker ou d'autres applications associées.

**Modification de votre Dockerfile à l'aide de l'IDE AWS Cloud9**

Si votre fichier Dockerfile possède une extension de fichier, ouvrez le menu contextuel (clic droit) du fichier et supprimez l'extension de fichier. Un Dockerfile avec des extensions peut provoquer des conflits avec certaines versions de Docker ou d'autres applications associées.

Une fois l'extension de fichier supprimée de votre Dockerfile :

1. Ouvrez le Dockerfile vide directement dans AWS Cloud9 l'IDE.

1. Copiez le contenu de l'exemple suivant dans votre Dockerfile.  
**Example Modèle d'image de fichier Dockerfile**  

   ```
   FROM ubuntu:22.04
   
   # Install dependencies
   RUN apt-get update && \
    apt-get -y install apache2
   
   # Install apache and write hello world message
   RUN echo 'Hello World!' > /var/www/html/index.html
   
   # Configure apache
   RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
    echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
    echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ 
    echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
    chmod 755 /root/run_apache.sh
   
   EXPOSE 80
   
   CMD /root/run_apache.sh
   ```

   Il s'agit d'un Dockerfile qui utilise une image Ubuntu 22.04. Les instructions **RUN** mettent à jour les caches des packages. Installez les packages logiciels pour le serveur web et écrivent ensuite le contenu « Hello World \$1 » à la racine du document du serveur web. L'instruction **EXPOSE** expose le port 80 sur le conteneur et l'instruction **CMD** démarre le serveur web.

1. Enregistrez votre fichier Dockerfile.

## 2. Création de votre image à partir de votre Dockerfile
<a name="build-docker-image"></a>

Le Dockerfile que vous avez créé contient les informations nécessaires pour créer une image pour un programme. Avant de pouvoir transférer cette image vers votre instance Amazon ECR, commencez par créer l'image.

**Création d'une image à partir de votre Dockerfile**

1. Pour accéder au répertoire qui contient votre Dockerfile, utilisez l'interface de ligne de commande Docker ou une interface de ligne de commande intégrée à votre instance de Docker.

1. Pour créer l'image définie dans votre Dockerfile, exécutez la commande **Docker build** depuis le même répertoire que le Dockerfile.

   ```
             docker build -t hello-world .
   ```

1. Exécutez la commande **Docker images** pour vérifier que l'image a été créée correctement.

   ```
   docker images --filter reference=hello-world
   ```  
**Example**  

   La sortie est la suivante.

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. Pour exécuter la nouvelle image basée sur Ubuntu 22.04, utilisez la commande **echo**.
**Note**  
Cette étape n'est pas nécessaire pour créer ou diffuser votre image. Cependant, vous pouvez voir comment fonctionne l'image du programme lorsqu'elle est exécutée.

   ```
   FROM ubuntu:22.04
   CMD ["echo", "Hello from Docker in Cloud9"]
   ```

   Ensuite, exécutez et générez le fichier Dockerfile. Vous devez exécuter cette commande à partir du même répertoire que le fichier fichier fichier fichier.

   ```
   docker build -t hello-world .
   docker run --rm hello-world
   ```  
**Example**  

   La sortie est la suivante.

   ```
   Hello from Docker in Cloud9
   ```

   Pour de plus amples informations sur la commande **Docker run**, consultez la [Référence Docker Run](https://docs.docker.com/engine/reference/run/) dans le manuel de référence Docker.

## 3. Création d'un nouveau référentiel
<a name="create-repository"></a>

Pour charger votre image dans votre instance Amazon ECR, créez un nouveau référentiel dans lequel elle peut être stockée.

**Création d'un référentiel Amazon ECR**

1. Dans la barre de navigation de l' AWS Cloud9 IDE, choisissez l'**icône du AWS Toolkit**.

1. Développez le menu AWS Explorer.

1. Localisez la valeur par défaut Région AWS associée à votre Compte AWS. Ensuite, sélectionnez-le pour voir la liste des services qui passent par l' AWS Cloud9 IDE.

1. Ouvrez le menu contextuel (clic droit) de l'option **ECR** afin de lancer le processus de **création d'un référentiel**. Sélectionnez ensuite **Créate Repository (Créer un référentiel)**.

1. Pour terminer le processus, suivez les instructions.

1. Une fois le processus terminé, vous pouvez accéder à votre nouveau référentiel depuis la section **ECR** du menu AWS Explorer.

## 4. Pousser, extraire et supprimer des images
<a name="push-image"></a>

Après avoir créé une image à partir de votre Dockerfile et créé un référentiel, vous pouvez transférer votre image dans votre référentiel Amazon ECR. En outre, à l'aide de l' AWS explorateur avec Docker et de la AWS CLI, vous pouvez effectuer les opérations suivantes :
+ Extraire une image d'un référentiel.
+ Supprimer une image stockée dans votre référentiel.
+ Supprimer votre référentiel.

**Authentification de Docker avec votre registre par défaut**

L'authentification est requise pour échanger des données entre les instances Amazon ECR et Docker. Pour authentifier Docker avec votre registre :

1. Ouvrez un terminal dans votre AWS Cloud9 IDE. 

1. Utilisez **get-login-password**cette méthode pour vous authentifier auprès de votre registre ECR privé et entrez votre région et Compte AWS votre identifiant.

   ```
   aws ecr get-login-password \
       --region <region> \
   | docker login \
       --username AWS \
       --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```
**Important**  
Dans la commande précédente, remplacez **region** et **AWS\$1account\$1id** par les informations spécifiques à votre Compte AWS. Une valeur valide **region** est *us-east-1*.

**Balisage et envoi d'une image vers un référentiel**

Après avoir authentifié Docker avec votre instance de AWS, envoyez une image dans votre référentiel.

1. Utilisez la commande **docker images** pour afficher les images que vous avez stockées localement et identifier celle que vous souhaitez étiqueter.

   ```
   docker images
   ```  
**Example**  

   La sortie est la suivante.

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. Créez votre image Docker à l’aide de la commande **Docker tag**.

   ```
   docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```

1. Transférez l'image balisée vers votre référentiel à l'aide de la commande **Docker push**.
**Important**  
Assurez-vous que le nom de votre dépôt local est le même que celui de votre EC2 dépôt AWS Amazon. Dans cet exemple, les deux référentiels doivent être nommés `hello-world`. Pour plus d'informations sur la transmission d'images avec docker, voir [Transmission d'une image Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).

   ```
   docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```  
**Example**  

   La sortie est la suivante.

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

Une fois que votre image balisée est correctement téléchargée dans votre dépôt, actualisez le AWS kit d'outils en choisissant **Refresh Explorer** dans l'onglet AWS Explorer. Il est ensuite visible dans le menu AWS Explorer de l' AWS Cloud9 IDE.

**Extraire une image d'Amazon ECR**
+ Vous pouvez extraire une image vers votre instance locale de la commande **Docker tag**.

  ```
  docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  ```  
**Example**  

  La sortie est la suivante.

  ```
  azonaws.com/hello-world:latest
  latest: Pulling from hello-world
  Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e
  Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
  ```

**Supprimer une image de votre référentiel Amazon ECR**

Il existe deux méthodes pour supprimer une image de l' AWS Cloud9 IDE. La première méthode consiste à utiliser l' AWS explorateur.

1. Dans l' AWS explorateur, développez le menu **ECR.**

1. Développez le référentiel dont vous souhaitez supprimer une image.

1. Ouvrez le menu contextuel (clic droit) de la balise image associée à l'image que vous souhaitez supprimer.

1. Pour supprimer toutes les images stockées associées à cette balise, choisissez **Delete tag… (Supprimer la balise)**.

**Supprimer une image à l'aide de la AWS CLI**
+ Vous pouvez également supprimer une image de votre dépôt à l'aide de la batch-delete-image commande **AWS ecr.**

  ```
  aws ecr batch-delete-image \
        --repository-name hello-world \
        --image-ids imageTag=latest
  ```  
**Example**  

  La sortie est la suivante.

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```

**Supprimer un référentiel de votre instance Amazon ECR**

Il existe deux méthodes pour supprimer un dépôt de l' AWS Cloud9 IDE. La première méthode consiste à utiliser l' AWS explorateur :

1. Dans l' AWS explorateur, développez le menu **ECR.**

1. Ouvrez le menu contextuel (clic droit) pour le référentiel que vous souhaitez supprimer.

1. Choisissez **Delete Repository… (Supprimer le référentiel)**.

**Suppression d'un référentiel Amazon ECR de la CLI AWS**
+ Vous pouvez supprimer un dépôt à l'aide de la commande **AWS ecr delete-repository**.
**Note**  
Normalement, vous ne pouvez pas supprimer un référentiel sans supprimer au préalable les images qu'il contient. Toutefois, si vous ajoutez l'indicateur **--force**, vous pouvez supprimer un dépôt et toutes ses images en une seule étape.

  ```
          aws ecr delete-repository \
        --repository-name hello-world \
        --force
  ```  
**Example**  

  La sortie est la suivante.

  ```
  --repository-name hello-world --force
  {
      "repository": {
          "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", 
          "registryId": "922327013870", 
          "imageTagMutability": "MUTABLE", 
          "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", 
          "repositoryName": "hello-world", 
          "createdAt": 1664469874.0
      }
  }
  ```