

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Identificação automática de imagens de contêineres duplicadas ao migrar para um repositório do Amazon ECR
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository"></a>

*Rishabh Yadav e Rishi Singla, Amazon Web Services*

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

O padrão fornece uma solução automatizada para identificar se as imagens armazenadas em diferentes repositórios de contêineres são duplicadas. Essa verificação é útil quando você planeja migrar imagens de outros repositórios de contêiner para o Amazon Elastic Container Registry (Amazon ECR).

Para obter informações básicas, o padrão também descreve os componentes de uma imagem de contêiner, como o resumo da imagem, o manifesto e as marcações. Ao planejar uma migração para o Amazon ECR, você pode decidir sincronizar suas imagens de contêiner em todos os registros de contêineres comparando os resumos das imagens. Antes de migrar suas imagens de contêiner, você precisa verificar se essas imagens já existem no repositório do Amazon ECR para evitar duplicações. No entanto, pode ser difícil detectar duplicações comparando resumos de imagens, o que pode causar problemas na fase inicial de migração.  Este padrão compara os resumos de duas imagens semelhantes que estão armazenadas em diferentes registros de contêineres e explica por que os resumos variam, para ajudar você a comparar imagens com precisão.

## Pré-requisitos e limitações
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-prereqs"></a>
+ Um ativo Conta da AWS
+ Acesso ao [registro público do Amazon ECR](https://gallery.ecr.aws/)
+ Familiaridade com o seguinte: Serviços da AWS
  + [AWS CodeCommit](https://aws.amazon.com/codecommit/)
  + [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
  + [AWS CodeBuild](https://aws.amazon.com/codebuild/)
  + [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/)
  + [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/)
+  CodeCommit Credenciais configuradas (consulte [as instruções](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html))

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

**Componentes de imagem de contêiner**

O diagrama a seguir ilustra alguns dos componentes de uma imagem de contêiner. Esses componentes são descritos após o diagrama.

![Manifesto, configuração, camadas do sistema de arquivos e resumos.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/7db5020c-6f5b-4e91-b91a-5b8ae844be1b/images/71b99c67-a934-4f94-8af8-2a8431fb91f5.png)


**Termos e definições**

Os termos a seguir são definidos na [Open Container Initiative (OCI) Image Specification](https://github.com/opencontainers/image-spec/blob/main/spec.md).
+ **Registro:** um serviço para armazenamento e gerenciamento de imagens.
+ **Cliente:** uma ferramenta que se comunica com registros e trabalha com imagens locais.
+ **Push:** o processo de upload de imagens para um registro.
+ **Pull:** o processo para baixar imagens de um registro.
+ **Blob:** a forma binária de conteúdo que é armazenada por um registro e pode ser tratada por um resumo.
+ **Índice:** um constructo que identifica vários manifestos de imagem para diferentes plataformas de computador (como x86-64 ou ARM de 64 bits) ou tipos de mídia. Para obter mais informações, consulte a [OCI Image Index Specification](https://github.com/opencontainers/image-spec/blob/main/image-index.md).
+ **Manifesto:** um documento JSON que define uma imagem ou artefato que é carregado por meio do endpoint do manifesto. Um manifesto pode fazer referência a outros blobs em um repositório usando descritores. Para obter mais informações, consulte a [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md).
+ **Camada do sistema de arquivos:** bibliotecas do sistema e outras dependências de uma imagem.
+ **Configuração:** um blob que contém metadados de artefatos e é referenciado no manifesto. Para obter mais informações, consulte a [OCI Image Configuration Specification](https://github.com/opencontainers/image-spec/blob/main/config.md).
+ **Objeto ou artefato:** um item de conteúdo conceitual armazenado como um blob e associado a um manifesto anexo com uma configuração.
+ **Digest:** um identificador exclusivo criado com base em um hash criptográfico do conteúdo de um manifesto. O resumo da imagem ajuda a identificar de forma exclusiva uma imagem de contêiner imutável. Ao extrair uma imagem usando seu resumo, você baixará a mesma imagem todas as vezes em qualquer sistema operacional ou arquitetura. Para obter mais informações, consulte a [OCI Image Specification](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests).
+ **Tag:** um identificador de manifesto legível por humanos. Em comparação com os resumos de imagens, que são imutáveis, as marcações são dinâmicas. Uma marcação que aponta para uma imagem pode mudar e passar de uma imagem para outra, embora o resumo da imagem subjacente permaneça o mesmo.

**Arquitetura de destino**

O diagrama a seguir mostra a arquitetura de alto nível da solução fornecida por esse padrão para identificar imagens de contêineres duplicadas comparando imagens armazenadas no Amazon ECR e em repositórios privados.

![Detecção automática de duplicatas com e. CodePipeline CodeBuild](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/7db5020c-6f5b-4e91-b91a-5b8ae844be1b/images/5ee62bc8-db8d-48a3-9e79-f3392b6e9bf7.png)


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

**Serviços da AWS**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los em todo o ciclo de vida em todas Contas da AWS as regiões.
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
+ O [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é um serviço de controle de versão que ajuda no armazenamento e no gerenciamento de repositórios Git de forma privada, sem a necessidade de administrar o próprio sistema de controle de origem.
+ O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações.
+ O [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.

**Código **

O código desse padrão está disponível na [solução**** automatizada do GitHub repositório para identificar imagens de contêineres duplicadas entre](https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories/) repositórios.

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

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

### Extrair imagens de contêineres de repositóriod públicos e privados do Amazon ECR
<a name="pull-container-images-from-ecr-public-and-private-repositories"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Extrai uma imagem do repositório público do Amazon ECR. | No terminal, execute o seguinte comando para extrair a imagem `amazonlinux` do repositório público do Amazon ECR.<pre>$~ % docker pull public.ecr.aws/amazonlinux/amazonlinux:2018.03 </pre><br />Quando a imagem for transferida para sua máquina local, você verá o seguinte resumo, que representa o índice da imagem.<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> | Desenvolvedor de aplicativos, AWS DevOps, administrador da AWS | 
| Envie a imagem para um repositório privado do Amazon ECR. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Administrador da AWS, AWS DevOps, desenvolvedor de aplicativos | 
| Extraia a mesma imagem do repositório privado do Amazon ECR. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Desenvolvedor de aplicativos, AWS DevOps, administrador da AWS | 

### Comparar os manifestos de imagem
<a name="compare-the-image-manifests"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Encontre o manifesto da imagem armazenada no repositório público do Amazon ECR. | No terminal, execute o seguinte comando para extrair o manifesto da imagem `public.ecr.aws/amazonlinux/amazonlinux:2018.03` do repositório público do 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> | Administrador da AWS, AWS DevOps, desenvolvedor de aplicativos | 
| Encontre o manifesto da imagem armazenada no repositório privado do Amazon ECR. | No terminal, execute o seguinte comando para extrair o manifesto da imagem `<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest` do repositório privado do 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, administrador de sistemas da AWS, desenvolvedor de aplicativos | 
| Compare o resumo obtido pelo Docker com o resumo do manifesto da imagem no repositório privado do Amazon ECR. | Outra questão é por que o resumo fornecido pelo comando **docker pull** difere do resumo do manifesto para a imagem `<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest`.<br />O resumo usado para **docker pull** representa o resumo do manifesto da imagem, que é armazenado em um registro. Esse resumo é considerado a raiz de uma cadeia de hash, porque o manifesto contém o hash do conteúdo que será baixado e importado para o Docker.<br />O ID da imagem usado no Docker pode ser encontrado neste manifesto como `config.digest`. Isso representa a configuração de imagem que o Docker usa. Então, você poderia dizer que o manifesto é o envelope e a imagem é o conteúdo do envelope. O resumo do manifesto é sempre diferente do ID da imagem. No entanto, um manifesto específico deve sempre produzir o mesmo ID de imagem. Como o resumo do manifesto é uma cadeia de hash, não podemos garantir que sempre será o mesmo para um determinado ID de imagem. Na maioria dos casos, ele produz o mesmo resumo, embora o Docker não possa garantir isso. A possível diferença no resumo do manifesto decorre do fato de o Docker não armazenar localmente os blobs que são compactados com o gzip. Portanto, a exportação de camadas pode produzir um resumo diferente, embora o conteúdo não compactado permaneça o mesmo. O ID da imagem verifica se o conteúdo não compactado é o mesmo; ou seja, o ID da imagem agora é um identificador de conteúdo endereçável (`chainID`).<br />Para confirmar essas informações, você pode comparar a saída do comando **docker inspect** nos repositórios públicos e privados do Amazon ECR:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)<br />Os resultados verificam se as duas imagens têm o mesmo resumo de ID de imagem e resumo de camada.<br />ID: `f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68`<br />Camadas: `d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2`<br />Além disso, os resumos são baseados nos bytes do objeto gerenciado localmente (o arquivo local é um tar da camada de imagem do contêiner) ou no blob enviado ao servidor de registro. No entanto, quando você envia o blob para um registro, o tar é compactado e o resumo é computado no arquivo tar compactado. Portanto, a diferença no valor do resumo do **docker pull** surge da compactação aplicada no nível do registro (Amazon ECR privado ou público).Essa explicação é específica para o uso de um cliente Docker. Você não verá esse comportamento com outros clientes, como **nerdctl** ou **Finch**, porque eles não compactam automaticamente a imagem durante as operações de push e pull. | AWS DevOps, administrador de sistemas da AWS, desenvolvedor de aplicativos | 

### Identificar automaticamente imagens duplicadas entre os repositórios públicos e privados do Amazon ECR
<a name="automatically-identify-duplicate-images-between-ecr-public-and-private-repositories"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Clone o repositório do Github desse padrão em uma pasta local:<pre>$git clone https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories</pre> | Administrador da AWS, AWS DevOps | 
| Configure um CI/CD pipeline. | O GitHub repositório inclui um `.yaml` arquivo que cria uma CloudFormation pilha para configurar um pipeline. AWS CodePipeline[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)<br />O pipeline será configurado com dois estágios (CodeCommit e CodeBuild, conforme mostrado no diagrama da arquitetura) para identificar imagens no repositório privado que também existem no repositório público. O pipeline é configurado com os seguintes recursos:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Administrador da AWS, AWS DevOps | 
| Preencha o CodeCommit repositório. | Para preencher o CodeCommit repositório, execute estas etapas:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Administrador da AWS, AWS DevOps | 
| Limpeza. | Para evitar cobranças futuras, exclua os recursos seguindo estas etapas:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | Administrador da AWS | 

## Solução de problemas
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Ao tentar enviar, extrair ou interagir de outra forma com um CodeCommit repositório a partir do terminal ou da linha de comando, você é solicitado a fornecer um nome de usuário e uma senha, além de fornecer as credenciais do Git para seu usuário do IAM. | As causas comuns para esse erro são as seguintes:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)<br />Dependendo de seu sistema operacional e ambiente local, talvez seja necessário instalar um gerenciador de credenciais, configurar o gerenciador de credenciais incluído no sistema operacional ou personalizar o ambiente local para usar o armazenamento de credenciais. Por exemplo, se seu computador estiver executando o macOS, você pode usar o utilitário Acesso às Chaves para armazenar suas credenciais. Se seu computador for Windows, você pode usar o Git Credential Manager que é instalado com o Git para Windows. Para obter mais informações, consulte [Configuração para usuários HTTPS usando credenciais do Git na CodeCommit documentação e Armazenamento de credenciais](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) [na](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage) documentação do Git. | 
| Você encontra erros de HTTP 403 ou “sem credenciais básicas de autenticação” ao enviar uma imagem para o repositório do Amazon ECR. | **Você pode encontrar essas mensagens de erro do comando **docker push** ou **docker pull**, mesmo que tenha se autenticado com sucesso no Docker usando o comando aws ecr. get-login-password** As causas conhecidas são:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | 

## Recursos relacionados
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-resources"></a>
+ [Solução automatizada para identificar imagens de contêineres duplicadas entre repositórios (GitHub repositório](https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories/))
+ [Galeria Pública do Amazon ECR](https://gallery.ecr.aws/)
+ [Private images in Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/images.html) (documentação do Amazon ECR)
+ [AWS::CodePipeline::Pipeline recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html) (CloudFormation documentação)
+ [OCI Image Format Specification](https://github.com/opencontainers/image-spec/blob/main/spec.md)

## Mais informações
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-additional"></a>

**Saída da inspeção Docker para imagem no repositório público do 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"
        }
    }
]
```

**Saída da inspeção do Docker para imagem no repositório privado do 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"
        }
    }
]
```