Mover uma imagem ao longo do seu ciclo de vida no Amazon ECR - Amazon ECR

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

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 AWS Management Console em vez do AWS CLI, consulteCriar um repositório privado do Amazon ECR para armazenar imagens.

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

Pré-requisitos

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

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 no Guia do usuário da AWS Command Line Interface .

Instalar o Docker

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.

Não é necessário um sistema de desenvolvimento local para usar o Docker. Se você EC2 já usa a Amazon, 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.

Para instalar o Docker em uma EC2 instância da Amazon usando uma AMI Amazon Linux 2023
  1. Inicie uma instância com a mais recente AMI do Amazon Linux 2023. Para obter mais informações, consulte Lançamento de uma instância no Guia EC2 do usuário da Amazon.

  2. Conecte-se à sua instância. Para obter mais informações, consulte Connect to Your Linux Instance no Amazon EC2 User Guide.

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

    sudo yum update -y
  4. Instale o pacote do Docker Community Edition mais recente.

    sudo yum install docker
  5. Inicie o serviço Docker.

    sudo service docker start
  6. 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
  7. 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.

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

Nesta etapa, você cria uma imagem Docker de uma aplicação web simples e a testa em seu sistema local ou EC2 instância da Amazon.

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.

    touch Dockerfile
  2. 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!” 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.

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

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

  6. Abra um navegador e aponte para o servidor que está executando o Docker e hospedando seu contêiner.

    • Se você estiver usando uma EC2 instância, esse é o valor de DNS público para o servidor, que é o mesmo endereço usado para se conectar à instância com 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/.

    • 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!” instrução.

  7. Interrompa o contêiner do Docker digitando Ctrl+c.

Etapa 2: criar um repositório

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

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 (Instalar a AWS Command Line Interface ) no User Guide (Guia do usuário da ).

  • get-login-password (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- (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

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

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

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

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