

 AWS Cloud9 não está mais disponível para novos clientes. Os clientes atuais do AWS Cloud9 podem continuar usando o serviço normalmente. [Saiba mais](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# Trabalhando com o Amazon ECR no IDE AWS Cloud9
<a name="ecr"></a>

O Amazon Elastic Container Registry (Amazon ECR) é AWS um serviço gerenciado de registro de contêineres seguro e escalável. Várias funções do serviço Amazon ECR podem ser acessadas a partir do AWS Toolkit Explorer:
+ Criar um repositório.
+ Criação AWS App Runner de um serviço para seu repositório ou imagem marcada.
+ Acessando a tag de imagem e o repositório URIs ou ARNs.
+ Exclusão de etiquetas e repositórios de imagens.

Você também pode acessar a gama completa de funções do Amazon ECR por meio do AWS Cloud9 console instalando a AWS CLI e outras plataformas.

Para obter mais informações sobre o Amazon ECR, consulte [What is Amazon ECR?](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) (O que é o Amazon ECR?) no Guia do usuário do Amazon Elastic Container Registry.

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

Os itens a seguir estão pré-instalados no AWS Cloud9 IDE para EC2 ambientes AWS Cloud9 Amazon. Eles são obrigados a acessar o serviço Amazon ECR a partir do AWS Cloud9 IDE. 

### Credenciais do IAM
<a name="create-an-iam-user"></a>

O perfil do IAM que você criou e usou para autenticação no console do AWS . Para obter mais informações sobre o IAM, consulte o [Manual do usuário do AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

### Configuração do Docker
<a name="create-an-iam-user"></a>

O Docker vem pré-instalado no AWS Cloud9 IDE para ambientes AWS Cloud9 Amazon EC2 . Para obter mais informações sobre o Docker, consulte [Install Docker Engine](https://docs.docker.com/engine/install/) (Como instalar o mecanismo do Docker).

### AWS Configuração da CLI versão 2
<a name="create-an-iam-user"></a>

AWS A CLI versão 2 está pré-instalada no IDE AWS Cloud9 para ambientes Amazon AWS Cloud9 . EC2 Para obter mais informações sobre a AWS CLI versão 2, consulte [Instalando, atualizando e desinstalando a CLI AWS](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) versão 2.

**Topics**
+ [Pré-requisitos](#prereqs-awstoolkit-vscode-ecr)
+ [Usando o Amazon ECR com IDE AWS Cloud9](ecr-working.md)

# Trabalhando com o serviço Amazon ECR em AWS Cloud9
<a name="ecr-working"></a>

Você pode acessar o serviço Amazon Elastic Container Registry (Amazon ECR) diretamente do Explorer AWS AWS Cloud9 no IDE. Você pode usar o Amazon ECR para enviar uma imagem de programa a um repositório do Amazon ECR. Para começar, siga estas etapas:

1. Crie um Dockerfile que contenha as informações necessárias para criar uma imagem.

1. Crie uma imagem com base nesse Dockerfile e marque-a para processamento.

1. Crie um repositório dentro da instância do Amazon ECR. 

1. Envie a imagem marcada ao repositório.

**Topics**
+ [Pré-requisitos](#prereqs-vscode-ecr)
+ [1. Como criar um Dockerfile](#dockerfile-ecr-cloud9toolkit)
+ [2. Como criar uma imagem com base no Dockerfile](#build-docker-image)
+ [3. Criação de um repositório](#create-repository)
+ [4. Enviar, extrair e excluir imagens](#push-image)

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

Antes de usar o recurso Amazon ECR do AWS Toolkit for AWS Cloud9, certifique-se primeiro de atender a esses [pré-requisitos](ecr.md#prereqs-awstoolkit-vscode-ecr). Esses pré-requisitos estão pré-instalados no IDE AWS Cloud9 para EC2 ambientes Amazon e são necessários para acessar o AWS Cloud9 Amazon ECR.

## 1. Como criar um Dockerfile
<a name="dockerfile-ecr-cloud9toolkit"></a>

O Docker usa um arquivo chamado Dockerfile para definir uma imagem que pode ser enviada e armazenada em um repositório remoto. Antes de fazer upload de uma imagem em um repositório do ECR, crie um Dockerfile e, depois, crie uma imagem com base nesse Dockerfile.

**Como criar um Dockerfile**

1. Para navegar até o diretório em que você deseja armazenar o Dockerfile, escolha a opção **Toggle Tree** (Alternar árvore) na barra de navegação esquerda do IDE do AWS Cloud9 .

1. Crie um arquivo chamado **Dockerfile**.
**nota**  
AWS Cloud9 O IDE pode solicitar que você selecione um tipo de arquivo ou extensão de arquivo. Se isso ocorrer, selecione texto sem **formatação**. AWS Cloud9 O IDE tem uma extensão “dockerfile”. No entanto, não recomendamos usá-la. Isso porque ela pode causar conflitos com determinadas versões do Docker ou outras aplicações associadas.

**Editando seu Dockerfile usando o IDE AWS Cloud9**

Se o Dockerfile tiver uma extensão de arquivo, abra o menu de contexto (clique com o botão direito do mouse) do arquivo e remova a extensão. Um Dockerfile com extensões pode causar conflitos com determinadas versões do Docker ou outras aplicações associadas.

Depois que a extensão do arquivo for removida do Dockerfile:

1. Abra o Dockerfile vazio diretamente no AWS Cloud9 IDE.

1. Copie o conteúdo do exemplo a seguir em seu Dockerfile.  
**Example Modelo de imagem do 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
   ```

   Este é um Dockerfile que usa uma imagem do Ubuntu 22.04. As instruções **RUN** atualizam os caches do pacote. Instale os pacotes de software para o servidor Web e, depois, escreva o conteúdo “Hello World\$1” na raiz do documento do servidor Web. A instrução **EXPOSE** expõe a porta 80 do contêiner e a instrução **CMD** inicia o servidor Web.

1. Salve o Dockerfile.

## 2. Como criar uma imagem com base no Dockerfile
<a name="build-docker-image"></a>

O Dockerfile criado contém as informações necessárias para criar uma imagem para um programa. Antes de enviar essa imagem à instância do Amazon ECR, primeiro é necessário criá-la.

**Como criar uma imagem com base no Dockerfile**

1. Para navegar até o diretório que contém o Dockerfile, use a CLI do Docker ou uma CLI integrada à sua instância do Docker.

1. Para criar a imagem definida no Dockerfile, execute o comando **Docker build** no mesmo diretório do Dockerfile.

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

1. Para verificar se a imagem foi criada corretamente, execute o comando **Docker images**.

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

   A saída é a seguinte:

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

1. Para executar a imagem recém-criada com base no Ubuntu 22.04, use o comando **echo**.
**nota**  
Essa etapa não é necessária para criar ou enviar sua imagem. No entanto, você pode ver como a imagem do programa funciona quando é executada.

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

   Depois, execute e crie o Dockerfile. Você deve executar esse comando no mesmo diretório do Dockerfile.

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

   A saída é a seguinte:

   ```
   Hello from Docker in Cloud9
   ```

   Para obter mais informações sobre o comando **Docker run**, consulte [Docker Run reference](https://docs.docker.com/engine/reference/run/) (Referência de execução do Docker) no site do Docker.

## 3. Criação de um repositório
<a name="create-repository"></a>

Para fazer upload de sua imagem na instância do Amazon ECR, crie um repositório onde ela possa ser armazenada.

**Criação de um repositório do Amazon ECR**

1. Na barra de navegação do AWS Cloud9 IDE, escolha o **ícone do AWS kit de ferramentas**.

1. Expanda o menu do AWS Explorer.

1. Localize Região da AWS o padrão associado ao seu Conta da AWS. Em seguida, selecione-o para ver uma lista dos serviços que estão por meio do AWS Cloud9 IDE.

1. Abra o menu de contexto (clique com o botão direito do mouse) da opção **ECR** para iniciar o processo de **criação de um repositório**. Depois, selecione **Create Repository** (Criar repositório).

1. Para concluir o processo, siga as instruções.

1. Depois que o processo for concluído, você poderá acessar seu novo repositório na seção **ECR** do menu AWS Explorer.

## 4. Enviar, extrair e excluir imagens
<a name="push-image"></a>

Depois de criar uma imagem do Dockerfile e criar um repositório, você poderá enviar a imagem ao repositório do Amazon ECR. Além disso, usando o AWS Explorer com o Docker e a AWS CLI, você pode fazer o seguinte:
+ Enviar uma imagem pelo repositório.
+ Excluir uma imagem que esteja armazenada no repositório.
+ Excluir o repositório.

**Autenticar o Docker com o registro padrão**

A autenticação é necessária para trocar dados entre instâncias do Amazon ECR e do Docker. Para autenticar o Docker com o registro:

1. Abra um terminal dentro do seu AWS Cloud9 IDE. 

1. Use o **get-login-password**método para se autenticar em seu registro ECR privado e inserir sua região e Conta da AWS ID.

   ```
   aws ecr get-login-password \
       --region <region> \
   | docker login \
       --username AWS \
       --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```
**Importante**  
No comando anterior, substitua **region** e **AWS\$1account\$1id** pelas informações específicas da sua Conta da AWS. Um valor de **region** válido é *us-east-1*.

**Marcar e enviar uma imagem ao repositório**

Depois de autenticar o Docker com sua instância de AWS, envie uma imagem para o seu repositório.

1. Use o comando **docker images** para visualizar as imagens que você armazenou localmente e identificar a que você deseja marcar.

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

   A saída é a seguinte:

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

1. Marque a imagem com o comando **Docker tag**.

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

1. Envie a imagem marcada ao repositório com o comando **Docker push**.
**Importante**  
Certifique-se de que o nome do seu repositório local seja o mesmo do seu EC2 repositório AWS da Amazon. Neste exemplo, os dois repositórios devem ter o nome `hello-world`. Para obter mais informações sobre como enviar imagens com o Docker, consulte [Envio de uma imagem do 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**  

   A saída é a seguinte:

   ```
   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
   ```

Depois que sua imagem marcada for carregada com sucesso no seu repositório, atualize o AWS Toolkit escolhendo **Refresh Explorer na guia Explorer**. AWS Em seguida, fica visível no menu AWS Explorer no AWS Cloud9 IDE.

**Extrair uma imagem do Amazon ECR**
+ Você pode extrair uma imagem para a instância local do comando **Docker tag**.

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

  A saída é a seguinte:

  ```
  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
  ```

**Excluir uma imagem do repositório do Amazon ECR**

Há dois métodos para excluir uma imagem do AWS Cloud9 IDE. O primeiro método é usar o AWS Explorer.

1. No AWS Explorer, expanda o menu **ECR.**

1. Expanda o repositório do qual deseja excluir uma imagem.

1. Abra o menu de contexto (clique com o botão direito do mouse) da tag associada à imagem que você deseja excluir.

1. Para excluir todas as imagens armazenadas que estão associadas a essa tag, escolha **Delete Tag…** (Excluir tag…).

**Excluindo uma imagem usando a AWS CLI**
+ Você também pode excluir uma imagem do seu repositório com o comando **AWS ecr. batch-delete-image**

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

  A saída é a seguinte:

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

**Excluir uma imagem do repositório pela instância do Amazon ECR**

Há dois métodos para excluir um repositório do AWS Cloud9 IDE. O primeiro método é usar o AWS Explorer:

1. No AWS Explorer, expanda o menu **ECR.**

1. Abra o menu de contexto (clique com o botão direito do mouse) do repositório que você deseja excluir.

1. Escolha **Delete Repository…** (Excluir repositório…).

**Excluindo um repositório Amazon ECR da CLI AWS**
+ É possível excluir um repositório com o comando **AWS ecr delete-repository**.
**nota**  
Normalmente, não é possível excluir um repositório sem primeiro excluir as imagens contidas nele. No entanto, se adicionar a sinalização **--force**, você poderá excluir um repositório e todas as respectivas imagens em uma única etapa.

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

  A saída é a seguinte:

  ```
  --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
      }
  }
  ```