Trabalhando com o serviço Amazon Elastic Container Registry em AWS Cloud9 - AWS Cloud9

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 serviço Amazon Elastic Container Registry em AWS Cloud9

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.

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

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

  4. Envie a imagem marcada ao repositório.

Pré-requisitos

Antes de usar o recurso Amazon ECR do AWS Toolkit for AWS Cloud9, certifique-se primeiro de atender a esses pré-requisitos. Esses pré-requisitos estão pré-instalados no IDE para ambientes AWS Cloud9 Amazon EC2 e são necessários para acessar o AWS Cloud9 Amazon ECR.

1. Como criar um Dockerfile

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 .

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

  2. Copie o conteúdo do exemplo a seguir em seu Dockerfile.

    exemplo 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!” 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.

  3. Salve o Dockerfile.

2. Como criar uma imagem com base no Dockerfile

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.

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

    docker build -t hello-world .
  3. Para verificar se a imagem foi criada corretamente, execute o comando Docker images.

    docker images --filter reference=hello-world

    A saída é a seguinte:

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. 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

    A saída é a seguinte:

    Hello from Docker in Cloud9

    Para obter mais informações sobre o comando Docker run, consulte Docker Run reference (Referência de execução do Docker) no site do Docker.

3. Criação de um repositório

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.

  2. Expanda o menu do AWS Explorer.

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

  4. 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).

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

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

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.

  2. Use o get-login-passwordmé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_account_id 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

    A saída é a seguinte:

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  2. Marque a imagem com o comando Docker tag.

    docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  3. 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 repositório AWS Amazon EC2. 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.

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

    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

    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.

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

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

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

    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.

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

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

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