

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.

# Identifiez automatiquement les images de conteneur dupliquées lors de la migration vers un référentiel Amazon ECR
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository"></a>

*Rishabh Yadav et Rishi Singla, Amazon Web Services*

## Résumé
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-summary"></a>

Le modèle fournit une solution automatisée pour déterminer si les images stockées dans différents référentiels de conteneurs sont des doublons. Cette vérification est utile lorsque vous envisagez de migrer des images d'autres référentiels de conteneurs vers Amazon Elastic Container Registry (Amazon ECR).

Pour les informations de base, le modèle décrit également les composants d'une image conteneur, tels que le résumé de l'image, le manifeste et les balises. Lorsque vous planifiez une migration vers Amazon ECR, vous pouvez décider de synchroniser les images de vos conteneurs entre les registres de conteneurs en comparant les résumés des images. Avant de migrer vos images de conteneur, vous devez vérifier si ces images existent déjà dans le référentiel Amazon ECR afin d'éviter toute duplication. Cependant, il peut être difficile de détecter les doublons en comparant les résumés d'images, ce qui peut entraîner des problèmes lors de la phase initiale de migration.  Ce modèle compare les résumés de deux images similaires stockées dans des registres de conteneurs différents et explique pourquoi les résumés varient, afin de vous aider à comparer les images avec précision.

## Conditions préalables et limitations
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-prereqs"></a>
+ Un actif Compte AWS
+ Accès au registre [public Amazon ECR](https://gallery.ecr.aws/)
+ Connaissance des éléments suivants : Services AWS
  + [AWS CodeCommit](https://aws.amazon.com/codecommit/)
  + [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
  + [AWS CodeBuild](https://aws.amazon.com/codebuild/)
  + [Gestion des identités et des accès AWS (JE SUIS)](https://aws.amazon.com/iam/)
  + [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/)
+  CodeCommit Informations d'identification configurées (voir [les instructions](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html))

## Architecture
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-architecture"></a>

**Composants de l'image du conteneur**

Le schéma suivant illustre certains des composants d'une image de conteneur. Ces composants sont décrits après le schéma.

![Manifeste, configuration, couches du système de fichiers et résumés.](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/7db5020c-6f5b-4e91-b91a-5b8ae844be1b/images/71b99c67-a934-4f94-8af8-2a8431fb91f5.png)


**Termes et définitions**

Les termes suivants sont définis dans la [spécification d'image de l'Open Container Initiative (OCI)](https://github.com/opencontainers/image-spec/blob/main/spec.md).
+ **Registre :** service de stockage et de gestion d'images.
+ **Client :** outil qui communique avec les registres et fonctionne avec des images locales.
+ **Push :** processus de téléchargement d'images dans un registre.
+ **Pull :** processus de téléchargement d'images depuis un registre.
+ **Blob :** forme binaire du contenu qui est stocké par un registre et qui peut être traité par un condensé.
+ **Index :** construction qui identifie plusieurs manifestes d'images pour différentes plateformes informatiques (telles que x86-64 ou ARM 64 bits) ou types de supports. Pour plus d'informations, consultez la [spécification de l'indice d'image OCI](https://github.com/opencontainers/image-spec/blob/main/image-index.md).
+ **Manifeste :** document JSON qui définit une image ou un artefact téléchargé via le point de terminaison du manifeste. Un manifeste peut faire référence à d'autres blobs d'un dépôt à l'aide de descripteurs. Pour plus d'informations, consultez la [spécification OCI Image Manifest](https://github.com/opencontainers/image-spec/blob/main/manifest.md).
+ **Couche du système de fichiers :** bibliothèques système et autres dépendances d'une image.
+ **Configuration :** blob contenant les métadonnées des artefacts et référencé dans le manifeste. Pour plus d'informations, consultez la [spécification de configuration d'image OCI](https://github.com/opencontainers/image-spec/blob/main/config.md).
+ **Objet ou artefact :** élément de contenu conceptuel stocké sous forme de blob et associé à un manifeste accompagné d'une configuration.
+ **Résumé :** identifiant unique créé à partir d'un hachage cryptographique du contenu d'un manifeste. Le condensé d'image permet d'identifier de manière unique une image de conteneur immuable. Lorsque vous extrayez une image à l'aide de son condensé, vous téléchargez la même image à chaque fois, quel que soit le système d'exploitation ou l'architecture. Pour plus d'informations, consultez la [spécification d'image OCI](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests).
+ **Tag :** identifiant de manifeste lisible par l'homme. Par rapport aux résumés d'images, qui sont immuables, les balises sont dynamiques. Une balise pointant vers une image peut changer et passer d'une image à l'autre, même si le résumé de l'image sous-jacent reste le même.

**Architecture cible**

Le schéma suivant montre l'architecture de haut niveau de la solution fournie par ce modèle pour identifier les images de conteneur dupliquées en comparant les images stockées dans Amazon ECR et dans des référentiels privés.

![Détection automatique des doublons avec CodePipeline et. CodeBuild](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/7db5020c-6f5b-4e91-b91a-5b8ae844be1b/images/5ee62bc8-db8d-48a3-9e79-f3392b6e9bf7.png)


## Outils
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-tools"></a>

**Services AWS**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie dans toutes Comptes AWS les régions.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)est un service de génération entièrement géré qui vous aide à compiler le code source, à exécuter des tests unitaires et à produire des artefacts prêts à être déployés.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)est un service de contrôle de version qui vous permet de stocker et de gérer de manière privée des référentiels Git, sans avoir à gérer votre propre système de contrôle de source.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)vous permet de modéliser et de configurer rapidement les différentes étapes d'une version logicielle et d'automatiser les étapes nécessaires à la publication continue des modifications logicielles.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.

**Code**

Le code de ce modèle est disponible dans la [solution**** automatisée du GitHub référentiel pour identifier les images de conteneur dupliquées entre les référentiels.](https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories/)

## Bonnes pratiques
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-best-practices"></a>
+ [CloudFormation meilleures pratiques](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html)
+ [AWS CodePipeline meilleures pratiques](https://docs.aws.amazon.com/codepipeline/latest/userguide/best-practices.html)

## Épopées
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-epics"></a>

### Extraire des images de conteneurs depuis les référentiels publics et privés Amazon ECR
<a name="pull-container-images-from-ecr-public-and-private-repositories"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Extrayez une image du référentiel public Amazon ECR. | Depuis le terminal, exécutez la commande suivante pour extraire l'image `amazonlinux` du référentiel public Amazon ECR.<pre>$~ % docker pull public.ecr.aws/amazonlinux/amazonlinux:2018.03 </pre><br />Lorsque l'image a été extraite sur votre machine locale, vous verrez le résumé d'extraction suivant, qui représente l'index de l'image.<pre>2018.03: Pulling from amazonlinux/amazonlinux<br />4ddc0f8d367f: Pull complete <br /><br />Digest: sha256:f972d24199508c52de7ad37a298bda35d8a1bd7df158149b381c03f6c6e363b5<br /><br />Status: Downloaded newer image for public.ecr.aws/amazonlinux/amazonlinux:2018.03<br />public.ecr.aws/amazonlinux/amazonlinux:2018.03</pre> | Développeur d'applications, AWS DevOps, administrateur AWS | 
| Transférez l'image vers un référentiel privé Amazon ECR. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Administrateur AWS, AWS DevOps, développeur d'applications | 
| Extrayez la même image depuis le référentiel privé Amazon ECR. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Développeur d'applications, AWS DevOps, administrateur AWS | 

### Comparez les manifestes d'images
<a name="compare-the-image-manifests"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Recherchez le manifeste de l'image stockée dans le référentiel public Amazon ECR. | Depuis le terminal, exécutez la commande suivante pour extraire le manifeste de l'image `public.ecr.aws/amazonlinux/amazonlinux:2018.03` depuis le référentiel public Amazon ECR.<pre>$~ % docker manifest inspect public.ecr.aws/amazonlinux/amazonlinux:2018.03<br />{<br />   "schemaVersion": 2,<br />   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",<br />   "manifests": [<br />      {<br />         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",<br />         "size": 529,<br />         "digest": "sha256:52db9000073d93b9bdee6a7246a68c35a741aaade05a8f4febba0bf795cdac02",<br />         "platform": {<br />            "architecture": "amd64",<br />            "os": "linux"<br />         }<br />      }<br />   ]<br />}</pre> | Administrateur AWS, AWS DevOps, développeur d'applications | 
| Trouvez le manifeste de l'image stockée dans le référentiel privé Amazon ECR. | Depuis le terminal, exécutez la commande suivante pour extraire le manifeste de l'image `<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest` depuis le référentiel privé Amazon ECR.<pre>$~ % docker manifest inspect <account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest                                          <br />{<br />	"schemaVersion": 2,<br />	"mediaType": "application/vnd.docker.distribution.manifest.v2+json",<br />	"config": {<br />		"mediaType": "application/vnd.docker.container.image.v1+json",<br />		"size": 1477,<br />		"digest": "sha256:f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68"<br />	},<br />	"layers": [<br />		{<br />			"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",<br />			"size": 62267075,<br />			"digest": "sha256:4ddc0f8d367f424871a060e2067749f32bd36a91085e714dcb159952f2d71453"<br />		}<br />	]<br />}</pre> | AWS DevOps, administrateur système AWS, développeur d'applications | 
| Comparez le résumé extrait par Docker avec le résumé du manifeste de l'image dans le référentiel privé Amazon ECR. | Une autre question est de savoir pourquoi le résumé fourni par la commande **docker pull** diffère du résumé du manifeste pour l'image. `<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest`<br />Le condensé utilisé pour **docker pull** représente le condensé du manifeste d'image, qui est stocké dans un registre. Ce condensé est considéré comme la racine d'une chaîne de hachage, car le manifeste contient le hachage du contenu qui sera téléchargé et importé dans Docker.<br />L'ID d'image utilisé dans Docker se trouve dans ce manifeste sous `config.digest` la forme. Cela représente la configuration d'image utilisée par Docker. On pourrait donc dire que le manifeste est l'enveloppe et que l'image est le contenu de l'enveloppe. Le résumé du manifeste est toujours différent de l'ID de l'image. Cependant, un manifeste spécifique doit toujours produire le même identifiant d'image. Le résumé du manifeste étant une chaîne de hachage, nous ne pouvons pas garantir qu'il sera toujours le même pour un identifiant d'image donné. Dans la plupart des cas, il produit le même résumé, bien que Docker ne puisse pas le garantir. La différence possible dans le résumé du manifeste provient du fait que Docker ne stocke pas les blobs compressés avec gzip localement. Par conséquent, l'exportation de couches peut produire un condensé différent, même si le contenu non compressé reste le même. L'identifiant de l'image vérifie que le contenu non compressé est identique ; c'est-à-dire que l'identifiant de l'image est désormais un identifiant adressable au contenu (). `chainID`<br />Pour confirmer ces informations, vous pouvez comparer le résultat de la commande **docker inspect** sur les référentiels publics et privés Amazon ECR :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)<br />Les résultats vérifient que les deux images ont le même condensé d'ID d'image et le même résumé de couche.<br />Identifiant : `f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68`<br />Couches : `d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2`<br />En outre, les résumés sont basés sur les octets de l'objet géré localement (le fichier local est un tar de la couche d'image du conteneur) ou sur le blob transmis au serveur de registre. Toutefois, lorsque vous transférez le blob vers un registre, le tar est compressé et le condensé est calculé dans le fichier tar compressé. Par conséquent, la différence entre la valeur du **docker pull** digest provient de la compression appliquée au niveau du registre (Amazon ECR privé ou public).Cette explication est spécifique à l'utilisation d'un client Docker. Vous ne verrez pas ce comportement avec d'autres clients tels que **nerdctl** ou **Finch**, car ils ne compressent pas automatiquement l'image lors des opérations push et pull. | AWS DevOps, administrateur système AWS, développeur d'applications | 

### Identifiez automatiquement les images dupliquées entre les référentiels publics et privés d'Amazon ECR
<a name="automatically-identify-duplicate-images-between-ecr-public-and-private-repositories"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Clonez le dépôt Github pour ce modèle dans un dossier local :<pre>$git clone https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories</pre> | Administrateur AWS, AWS DevOps | 
| Configurez un CI/CD pipeline. | Le GitHub référentiel inclut un `.yaml` fichier qui crée une CloudFormation pile dans laquelle configurer un pipeline AWS CodePipeline.[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)<br />Le pipeline sera configuré en deux étapes (CodeCommit et CodeBuild, comme indiqué dans le schéma d'architecture) pour identifier les images du référentiel privé qui existent également dans le référentiel public. Le pipeline est configuré avec les ressources suivantes :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Administrateur AWS, AWS DevOps | 
| Renseignez le CodeCommit référentiel. | Pour remplir le CodeCommit référentiel, effectuez les opérations suivantes :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Administrateur AWS, AWS DevOps | 
| Nettoyer. | Pour éviter d'encourir de futurs frais, supprimez les ressources en procédant comme suit :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Administrateur AWS | 

## Résolution des problèmes
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Lorsque vous essayez de pousser, d'extraire ou d'interagir avec un CodeCommit référentiel depuis le terminal ou la ligne de commande, vous êtes invité à fournir un nom d'utilisateur et un mot de passe, et vous devez fournir les informations d'identification Git de votre utilisateur IAM. | Les causes les plus fréquentes de cette erreur sont les suivantes :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)<br />En fonction de votre système d'exploitation et de votre environnement local, vous devrez peut-être installer un gestionnaire d'informations d'identification, configurer celui qui est inclus dans votre système d'exploitation ou personnaliser votre environnement local de manière à utiliser le stockage des informations d'identification. Par exemple, si votre ordinateur exécute macOS, vous pouvez utiliser l'utilitaire Keychain Access pour stocker vos informations d'identification. Si votre ordinateur est sous Windows, vous pouvez utiliser le gestionnaire d'informations d'identification Git installé avec Git pour Windows. Pour plus d'informations, consultez [Configuration pour les utilisateurs HTTPS à l'aide des informations d'identification Git](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) dans la CodeCommit documentation et [Stockage des informations d'identification](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage) dans la documentation Git. | 
| Vous rencontrez des erreurs HTTP 403 ou « aucun identifiant d'authentification de base » lorsque vous transférez une image vers le référentiel Amazon ECR. | **Ces messages d'erreur peuvent provenir de la commande **docker push ou docker** **pull**, même si vous vous êtes authentifié avec succès auprès de Docker à l'aide de la commande aws ecr. get-login-password** Les causes connues sont les suivantes :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | 

## Ressources connexes
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-resources"></a>
+ [Solution automatisée pour identifier les images de conteneur dupliquées entre les référentiels](https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories/) (GitHub référentiel)
+ [Galerie publique Amazon ECR](https://gallery.ecr.aws/)
+ [Images privées dans Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/images.html) (documentation Amazon ECR)
+ [AWS::CodePipeline::Pipeline ressource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html) (CloudFormation documentation)
+ [Spécification du format d'image OCI](https://github.com/opencontainers/image-spec/blob/main/spec.md)

## Informations supplémentaires
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-additional"></a>

**Résultat de l'inspection Docker pour l'image dans le référentiel public Amazon ECR**

```
[
    {
        "Id": "sha256:f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68",
        "RepoTags": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest",
            "public.ecr.aws/amazonlinux/amazonlinux:2018.03"
        ],
        "RepoDigests": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository@sha256:52db9000073d93b9bdee6a7246a68c35a741aaade05a8f4febba0bf795cdac02",
            "public.ecr.aws/amazonlinux/amazonlinux@sha256:f972d24199508c52de7ad37a298bda35d8a1bd7df158149b381c03f6c6e363b5"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2023-02-23T06:20:11.575053226Z",
        "Container": "ec7f2fc7d2b6a382384061247ef603e7d647d65f5cd4fa397a3ccbba9278367c",
        "ContainerConfig": {
            "Hostname": "ec7f2fc7d2b6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"/bin/bash\"]"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "20.10.17",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 167436755,
        "VirtualSize": 167436755,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/merged",
                "UpperDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/diff",
                "WorkDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2"
            ]
        },
        "Metadata": {
            "LastTagTime": "2023-03-02T10:28:47.142155987Z"
        }
    }
]
```

**Résultat de l'inspection Docker pour une image dans le référentiel privé Amazon ECR**

```
[
    {
        "Id": "sha256:f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68",
        "RepoTags": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest",
            "public.ecr.aws/amazonlinux/amazonlinux:2018.03"
        ],
        "RepoDigests": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository@sha256:52db9000073d93b9bdee6a7246a68c35a741aaade05a8f4febba0bf795cdac02",
            "public.ecr.aws/amazonlinux/amazonlinux@sha256:f972d24199508c52de7ad37a298bda35d8a1bd7df158149b381c03f6c6e363b5"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2023-02-23T06:20:11.575053226Z",
        "Container": "ec7f2fc7d2b6a382384061247ef603e7d647d65f5cd4fa397a3ccbba9278367c",
        "ContainerConfig": {
            "Hostname": "ec7f2fc7d2b6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"/bin/bash\"]"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "20.10.17",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 167436755,
        "VirtualSize": 167436755,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/merged",
                "UpperDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/diff",
                "WorkDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2"
            ]
        },
        "Metadata": {
            "LastTagTime": "2023-03-02T10:28:47.142155987Z"
        }
    }
]
```