Conceitos básicos do Amazon ECR usando a AWS CLI - 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á.

Conceitos básicos do Amazon ECR usando a AWS CLI

As etapas a seguir orientam você pelas etapas necessárias para enviar uma imagem de contêiner ao Amazon ECR pela primeira vez usando a CLI do Docker e a AWS CLI.

Para obter mais informações sobre as outras ferramentas disponíveis para gerenciar os recursos da AWS, inclusive os diferentes SDKs da AWS, os toolkits do IDE e as ferramentas da linha de comando do Windows PowerShell, consulte http://aws.amazon.com/tools/.

Pré-requisitos

Antes de começar, você deve concluir as etapas em Configuração com o Amazon ECR.

Se você ainda não tiver o Docker e a AWS CLI mais recentes instalados e preparados, use as etapas a seguir para instalar essas duas ferramentas.

Instalar a AWS CLI

Você pode usar as ferramentas de linha de comando da AWS para emitir comandos na linha de comando do seu sistema e realizar tarefas do Amazon ECR e da AWS. Isso pode ser mais rápido e mais conveniente do que usar o console. As ferramentas da linha de comando também são úteis para criar scripts que executam tarefas da AWS.

Para usar a AWS CLI com o Amazon ECR, instale a versão mais recente da AWS CLI (a funcionalidade do Amazon ECR está disponível na AWS CLI a partir da versão 1.9.15). Você pode verificar a versão da AWS CLI com o comando aws --version. Para obter informações sobre como instalar a AWS CLI ou atualizá-la para a versão mais recente, consulte Instalar a AWS CLI versão 2 no Guia do usuário do 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 Ubuntu, e até o Mac OSX e o 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ê já usa o Amazon EC2, pode executar uma instância do Amazon Linux 2 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 instância do Amazon EC2

  1. Execute uma instância com a AMI do Amazon Linux 2. Para obter mais informações, consulte Executar de uma instância no Guia do usuário do Amazon EC2 para instâncias do Linux.

  2. Conecte-se à sua instância. Para obter mais informações, consulte Conectar-se à instância do Linux no Guia do usuário do Amazon EC2 para instâncias do Linux.

  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 amazon-linux-extras 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. Você pode 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

As definições de tarefa do Nesta seção, crie uma imagem de docker de um aplicativo web simples e teste-a no seu sistema local ou instância do EC2. Em seguida, envie a imagem ao registro de contêiner (como o Amazon ECR ou o Docker Hub) para poder usá-la em uma definição de tarefa do ECS.

Para criar uma imagem do Docker de um aplicativo web simples

  1. Crie um arquivo chamado Dockerfile. 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 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

    Esse Dockerfile usa a imagem do Ubuntu 18.04. As instruções de RUN atualizam os caches do pacote, instalam alguns pacotes de software para o servidor web e, em seguida, gravam o conteúdo "Hello World!" na raiz do documento do servidor web. A instrução EXPOSE expõe a porta 80 no 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. Execute docker images para verificar se a imagem foi criada corretamente.

    docker images --filter reference=hello-world

    Resultado:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
  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. Você pode ignorar a mensagem "Could not reliably determine the server's 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 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/.

    • Se você estiver usando docker-machine em um computador Windows ou Mac, localize o endereço IP da VM VirtualBox que está hospedando o Docker com o comando docker-machine ip, substituindo machine-name pelo nome da máquina de docker que você está usando.

      docker-machine ip machine-name

    Você deverá ver uma página da web com a sua instrução "Hello World!".

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

Etapa 2: autenticar-se no registro padrão

Depois de instalar e configurar o AWS CLI, autentique o CLI do Docker para seu registro padrão. Desta forma, o comando docker pode adicionar e extrair imagens com Amazon ECR. A AWS CLI fornece um comando get-login-password 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 no 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 Instalar a interface de linha de comando da AWS no Guia do usuário do AWS Command Line Interface.

  • 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
  • Get-ECRLoginCommand (AWS Tools para Windows PowerShell)

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

Etapa 3: criar um repositório

Agora que você tem uma imagem para enviar ao Amazon ECR, precisa criar um repositório para guardá-la. Neste exemplo, você cria um repositório chamado hello-world 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-world \ --image-scanning-configuration scanOnPush=true \ --region us-east-1

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. Você pode usar a CLI do docker para enviar imagens, mas há alguns pré-requisitos que devem ser atendidos para que isso funcione corretamente:

  • 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

    Resultado:

    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.us-east-1.amazonaws.com/hello-world:latest
  3. Envie a imagem.

    docker push aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

    Resultado:

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

Etapa 5: extrair uma imagem do Amazon ECR

Depois que a imagem for enviada ao repositório do Amazon ECR, você poderá extraí-la de outros locais. Use a CLI docker para extrair imagens, mas há alguns pré-requisitos que devem ser atendidos para que isso funcione corretamente:

  • 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.us-east-1.amazonaws.com/hello-world:latest

Resultado:

latest: Pulling from hello-world
0a85502c06c9: Pull complete
0998bf8fb9e9: Pull complete
a6785352b25c: Pull complete
e9ae3c220b23: Pull complete
Digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b
Status: Downloaded newer image for aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

Etapa 6: excluir uma imagem

Se você decidir que não precisa ou não quer mais uma imagem em um dos repositórios, poderá excluí-la com o comando batch-delete-image. Para excluir uma imagem, você deve especificar o repositório em que ele está e um valor imageTag ou imageDigest para imagem. O exemplo abaixo exclui uma imagem no repositório hello-world com a tag de imagem latest.

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

Resultado:

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

Etapa 7: excluir um repositório

Se você decidir que não precisa ou não quer mais um repositório inteiro de imagens, exclua o repositório. Por padrão, não é possível excluir um repositório que contém imagens. No entanto, o sinalizador --force permite isso. 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-world \ --force