

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

# Mover uma imagem ao longo do seu ciclo de vida no Amazon ECR
<a name="getting-started-cli"></a>

Se você estiver usando o Amazon ECR pela primeira vez, use as etapas a seguir com a CLI do Docker e a AWS CLI para criar uma imagem de amostra, autenticar-se no registro padrão e criar um repositório privado. Em seguida, envie uma imagem por push e extraia uma imagem do repositório privado. Quando você terminar de usar a imagem de exemplo, exclua a imagem de exemplo e o repositório.

Para usar o Console de gerenciamento da AWS em vez do AWS CLI, consulte[Criar um repositório privado do Amazon ECR para armazenar imagens](repository-create.md).

Para obter mais informações sobre as outras ferramentas disponíveis para gerenciar seus AWS recursos, incluindo os diferentes AWS SDKs kits de ferramentas do IDE e as ferramentas de linha de PowerShell comando do Windows, consulte [http://aws.amazon.com/tools/](https://aws.amazon.com/tools/).

## Pré-requisitos
<a name="getting-started-cli-prereqs"></a>

Se você não tiver o Docker mais recente AWS CLI instalado e pronto para uso, use as etapas a seguir para instalar essas duas ferramentas.

### Instale o AWS CLI
<a name="cli-install"></a>

Para usar o AWS CLI com o Amazon ECR, instale a AWS CLI versão mais recente. Para obter informações, consulte [Instalar a AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) no *Guia do usuário da AWS Command Line Interface *.

### Instalar o Docker
<a name="cli-install-docker"></a>

O Docker está disponível em muitos sistemas operacionais diferentes, incluindo a maioria das distribuições modernas do Linux, como o Ubuntu, e até no MacOS e no Windows. Para obter mais informações sobre como instalar o Docker no seu sistema operacional, consulte o [Guia de instalação do Docker](https://docs.docker.com/engine/installation/#installation).

Não é necessário um sistema de desenvolvimento local para usar o Docker. Se você já usa o Amazon EC2, pode iniciar uma instância do Amazon Linux 2023 e instalar o Docker para começar.

Se você já tiver um Docker instalado, vá para [Etapa 1: criar uma imagem do Docker](#cli-create-image).

**Para instalar o Docker em uma instância do Amazon EC2 usando uma AMI do Amazon Linux 2023**

1. Inicie uma instância com a mais recente AMI do Amazon Linux 2023. Para obter mais informações, consulte [Iniciar uma instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html) no *Manual do usuário do Amazon EC2*.

1. Conecte-se à sua instância. Para obter mais informações, consulte [Conectar-se à sua instância do Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) no *Manual do usuário do Amazon EC2*.

1. Atualize os pacotes instalados e o cache de pacotes em sua instância.

   ```
   sudo yum update -y
   ```

1. Instale o pacote do Docker Community Edition mais recente.

   ```
   sudo yum install docker
   ```

1. Inicie o serviço Docker.

   ```
   sudo service docker start
   ```

1. Adicione o `ec2-user` ao grupo `docker`, de modo que você possa executar comandos do Docker sem usar o `sudo`.

   ```
   sudo usermod -a -G docker ec2-user
   ```

1. Faça logout e login novamente para selecionar as novas permissões do grupo `docker`. É possível fazer isso ao fechar a janela de terminal SSH atual e se reconectar à sua instância em outra janela. Sua nova sessão SSH terá as permissões de grupo `docker` apropriadas.

1. Verifique se o `ec2-user` pode executar comandos do Docker sem `sudo`.

   ```
   docker info
   ```
**nota**  
Em alguns casos, pode ser necessário reinicializar sua instância para fornecer permissões para o `ec2-user` acessar o daemon do Docker. Tente reinicializar sua instância se você vir o seguinte erro:  

   ```
   Cannot connect to the Docker daemon. Is the docker daemon running on this host?
   ```

## Etapa 1: criar uma imagem do Docker
<a name="cli-create-image"></a>

Nesta etapa, crie uma imagem do Docker de uma aplicação Web simples e teste-a no sistema ou na instância do Amazon EC2 local.

**Para criar uma imagem do Docker de um aplicativo web simples**

1. Crie um arquivo chamado `Dockerfile`. Um Dockerfile é um manifesto que descreve a imagem básica a ser usada para a sua imagem do Docker e o que você deseja instalar e executar nela. Para obter mais informações sobre a Dockerfiles, visite [Referência de Dockerfiles](https://docs.docker.com/engine/reference/builder/).

   ```
   touch Dockerfile
   ```

1. Edite o `Dockerfile` que você acabou de criar e adicione o conteúdo a seguir.

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   
   # Install dependencies
   RUN yum update -y && \
    yum install -y httpd
   
   # Install apache and 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
   ```

   Esse Dockerfile usa a imagem pública do Amazon Linux 2 hospedada no Amazon ECR Public. As instruções `RUN` atualizam os caches de pacotes, instalam alguns pacotes de software para o servidor Web e, em seguida, gravam o conteúdo de “Hello World\$1” na raiz do documento dos servidores Web. A instrução `EXPOSE` expõe a porta 80 do contêiner e a instrução `CMD` inicia o servidor Web.

1. <a name="sample-docker-build-step"></a>Crie a imagem do Docker do seu Dockerfile.
**nota**  
Algumas versões do Docker podem exigir o caminho completo para o seu Dockerfile no seguinte comando, em vez de o caminho relativo mostrado abaixo.

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

1. Liste a sua imagem do contêiner.

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

   Saída:

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

1. Execute a imagem recém-criada. A opção `-p 80:80` mapeia a porta 80 exposta no contêiner para a porta 80 no sistema de host. Para obter mais informações sobre o **docker run**, acesse a [Referência de execução do Docker](https://docs.docker.com/engine/reference/run/).

   ```
   docker run -t -i -p 80:80 hello-world
   ```
**nota**  
A saída do servidor Web Apache é exibida na janela do terminal. É possível ignorar a mensagem "`Could not reliably determine the fully qualified domain name`".

1. Abra um navegador e aponte para o servidor que está executando o Docker e hospedando seu contêiner.
   + Se você estiver usando uma instância do EC2, esse é o valor **Public DNS** para o servidor, que é o mesmo endereço usado para se conectar à instância com o SSH. Certifique-se de que o security group para sua instância permita o tráfego de entrada na porta 80.
   + Se você estiver executando o Docker localmente, aponte seu navegador para [http://localhost/](http://localhost/).
   + Se você estiver usando **docker-machine** em um computador Windows ou Mac, encontre o endereço IP da VirtualBox VM que está hospedando o Docker com o **docker-machine ip** comando, substituindo-o *machine-name* pelo nome da máquina docker que você está usando.

     ```
     docker-machine ip machine-name
     ```

   Você deve ver uma página da Web com seu “Hello, World\$1” instrução.

1. Interrompa o contêiner do Docker digitando **Ctrl\$1c**.

## Etapa 2: criar um repositório
<a name="cli-create-repository"></a>

Agora que tem uma imagem para enviar ao Amazon ECR, você precisa criar um repositório para guardá-la. Neste exemplo, você cria um repositório chamado `hello-repository` para o qual enviará a imagem `hello-world:latest` posteriormente. Para criar um repositório, execute o seguinte comando:

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

## Etapa 3: autenticar-se no registro padrão
<a name="cli-authenticate-registry"></a>

Depois de instalar e configurar o AWS CLI, autentique a CLI do Docker em seu registro padrão. Desta forma, o comando **docker** pode enviar e extrair imagens com o Amazon ECR. O AWS CLI fornece um **get-login-password** comando para simplificar o processo de autenticação.

Para autenticar o Docker em um registro do Amazon ECR com get-login-password, execute o comando. **aws ecr get-login-password** Ao transmitir o token de autenticação para o comando **docker login**, use o valor `AWS` para o nome de usuário, e especifique o URI de registro do Amazon ECR para o qual deseja fazer a autenticação. Se autenticar em vários registros, você deverá repetir o comando para cada registro.
**Importante**  
Se você receber um erro, instale ou atualize para a versão mais recente da AWS CLI. Para obter mais informações, consulte [Installing the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) (Instalar a AWS Command Line Interface ) no * User Guide* (Guia do usuário da ).
+ [get-login-password](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login-password.html) (AWS CLI)

  ```
  aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  ```
+ [ECRLoginComando Get-](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ECRLoginCommand.html) (AWS Tools for Windows PowerShell)

  ```
  (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  ```

## Etapa 4: enviar uma imagem ao Amazon ECR
<a name="cli-push-image"></a>

Agora você pode enviar a imagem ao repositório do Amazon ECR que criou na seção anterior. Use a CLI do **docker** para enviar imagens por push após os seguintes pré-requisitos serem atendidos:
+ A versão mínima do **docker** está instalada: 1.7.
+ O token de autorização do Amazon ECR foi configurado com **docker login**.
+ O repositório do Amazon ECR existe, e o usuário tem acesso para enviar imagens ao repositório.

Depois que esses pré-requisitos forem atendidos, você poderá enviar a imagem ao repositório recém-criado no registro padrão da sua conta.

**Para marcar e enviar uma imagem para o Amazon ECR**

1. Liste as imagens que você armazenou localmente para identificar a imagem a ser marcada e enviada.

   ```
   docker images
   ```

   Saída:

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

1. Marque a imagem a ser enviada ao seu repositório.

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

1. Envie a imagem.

   ```
   docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest
   ```

   Saída:

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

## Etapa 5: extrair uma imagem do Amazon ECR
<a name="cli-pull-image"></a>

Depois que a imagem for enviada por push ao repositório do Amazon ECR, você poderá extraí-la de outros locais. Use a CLI do **docker** para extrair imagens após os seguintes pré-requisitos serem atendidos:
+ A versão mínima do **docker** está instalada: 1.7.
+ O token de autorização do Amazon ECR foi configurado com **docker login**.
+ O repositório do Amazon ECR existe, e o usuário tem acesso para extrair imagens do repositório.

Depois que esses pré-requisitos forem atendidos, você poderá extrair a imagem. Para extrair a imagem de exemplo do Amazon ECR, execute o seguinte comando:

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest
```

Saída:

```
latest: Pulling from hello-repository
0a85502c06c9: Pull complete
0998bf8fb9e9: Pull complete
a6785352b25c: Pull complete
e9ae3c220b23: Pull complete
Digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636EXAMPLE
Status: Downloaded newer image for aws_account_id.dkr.region.amazonaws.com/hello-repository:latest
```

## Etapa 6: excluir uma imagem
<a name="cli-delete-image"></a>

Caso não precise mais de uma imagem em um dos repositórios, você poderá excluí-la. Para excluir uma imagem, especifique o repositório em que ela está e um valor de `imageTag` ou `imageDigest` para imagem. O exemplo abaixo exclui uma imagem no repositório `hello-repository` com a tag de imagem `latest`. Para excluir a imagem de exemplo do repositório, execute o seguinte comando:

```
aws ecr batch-delete-image \
      --repository-name hello-repository \
      --image-ids imageTag=latest \
      --region region
```

## Etapa 7: excluir um repositório
<a name="cli-delete-repository"></a>

Caso não precise mais de um repositório inteiro de imagens, você pode excluí-lo. O exemplo a seguir usa o sinalizador `--force` para excluir um repositório que contenha imagens. Para excluir um repositório que contém imagens (e todas as imagens contidas nele), execute o seguinte comando:

```
aws ecr delete-repository \
      --repository-name hello-repository \
      --force \
      --region region
```