Trabalhar com o serviço Amazon Elastic Container Registry no VS Code - AWS Kit de ferramentas para VS Code

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

Trabalhar com o serviço Amazon Elastic Container Registry no VS Code

Você pode acessar o serviço Amazon Elastic Container Registry (Amazon ECR) diretamente do AWS Explorer no VS Code e usá-lo para enviar uma imagem de programa para um repositório do Amazon ECR. Para começar, faça o seguinte:

  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

Para poder usar o recurso do serviço Amazon ECR do kit de ferramentas para VS Code, você deve atender a estes pré-requisitos.

1. 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. Para carregar uma imagem em um repositório do ECR, primeiro você deve criar um Dockerfile e uma imagem com base nesse Dockerfile.

Criar um Dockerfile
  1. Use o Explorer do kit de ferramentas para VS Code para acessar o diretório em que você deseja armazenar o Dockerfile.

  2. Crie um arquivo chamado Dockerfile.

    nota

    O VS Code pode solicitar que você selecione um tipo ou extensão de arquivo. Se isso ocorrer, selecione texto sem formatação. O VS Code 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.

Editar o Dockerfile usando o VS Code

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.

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

  1. Abra o Dockerfile vazio diretamente no VS Code.

  2. Copie o conteúdo do exemplo a seguir no Dockerfile:

    exemplo Modelo de imagem do Dockerfile
    FROM ubuntu:18.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 18.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.

    Importante

    O Dockerfile não deve ter uma extensão anexada ao nome. Um Dockerfile com extensões pode causar conflitos com determinadas versões do Docker ou outras aplicações associadas.

2. Criar uma imagem com base no Dockerfile

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

Criar uma imagem com base no Dockerfile
  1. Use a CLI do Docker ou uma CLI integrada à instância do Docker para acessar o diretório que contém o Dockerfile.

  2. Execute o comando Docker build para criar a imagem definida no Dockerfile.

    docker build -t hello-world .
  3. Execute o comando Docker images para verificar se a imagem foi criada corretamente.

    docker images --filter reference=hello-world
    exemplo resultado do exemplo:
    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. nota

    Esta etapa não é necessária para criar ou enviar a imagem, mas você pode ver como a imagem do programa funciona quando é executada.

    Para executar a imagem que acabou de ser criada, use o comando Docker run.

    docker run -t -i -p 80:80 hello-world

    A opção -p especificada no exemplo anterior mapeia a porta 80 exposta no contêiner para a porta 80 do sistema host. Se você estiver executando o Docker localmente, acesse http://localhost:80 pelo navegador. Se o programa for executado corretamente, aparecerá a mensagem "Hello World!".

    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. Criar um repositório

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

Criar um repositório do Amazon ECR
  1. Na Barra de atividades do VS Code, selecione o ícone do kit de ferramentas da AWS.

  2. Expanda o menu do AWS Explorer.

  3. Localize a região padrão da AWS associada à conta da AWS. Em seguida, selecione para ver uma lista dos serviços disponíveis por meio do kit de ferramentas para VS Code.

  4. Escolha a opção ECR + para iniciar o processo Criar repositório.

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

  6. Após a conclusão, você poderá acessar o novo repositório na seção ECR do menu do 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 sistema operacional de linha de comando conectado à instância da AWS CLI.

  2. Use o método get-login-password para se autenticar no registro privado do ECR.

    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, você deve atualizar a region e o AWS_account_id com as informações específicas da sua conta da AWS.

Marcar e enviar uma imagem para o repositório

Depois de autenticar o Docker com a instância da AWS, envie uma imagem ao repositório.

  1. Use o comando Docker images para visualizar as imagens armazenadas localmente e identificar aquela que você gostaria de marcar.

    docker images
    exemplo resultado do exemplo:
    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 para o repositório com o comando Docker tag.

    docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
    exemplo resultado do exemplo:
    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

Após o upload bem-sucedido da imagem marcada para o repositório, ela ficará visível no menu do AWS Explorer.

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
    exemplo resultado do exemplo:
    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
Excluir uma imagem do repositório do Amazon ECR

Existem dois métodos para excluir uma imagem do VS Code. O primeiro método é usar o AWS Explorer.

  1. No AWS Explorer, expanda o menu ECR.

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

  3. Selecione a tag da imagem associada à imagem que deseja excluir ao abrir o menu de contexto (clique com o botão direito do mouse).

  4. Selecione a opção Excluir tag... para excluir todas as imagens armazenadas associadas a essa tag.

Excluir uma imagem usando a AWS CLI
  • Também é possível excluir uma imagem do repositório com o comando AWSecr batch-delete-image.

    AWS ecr batch-delete-image \ --repository-name hello-world \ --image-ids imageTag=latest
    exemplo resultado do exemplo:
    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
Excluir um repositório da instância do Amazon ECR

Existem dois métodos para excluir um repositório do VS Code. O primeiro método é usar o AWS Explorer.

  1. No AWS Explorer, expanda o menu ECR.

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

  3. Selecione a opção Excluir repositório… para o repositório escolhido.

Excluir um repositório do Amazon ECR da AWS CLI
  • É possível excluir um repositório com o comando AWS ecr delete-repository.

    nota

    Por padrão, não é possível excluir um repositório que contenha imagens. No entanto, o sinalizador --force permite a exclusão.

    AWS ecr delete-repository \ --repository-name hello-world \ --force
    exemplo resultado do exemplo:
    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }