Solução de problemas e comandos do Docker usando o 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á.

Solução de problemas e comandos do Docker usando o Amazon ECR

Em alguns casos, a execução de um comando do Docker no Amazon ECR pode resultar em uma mensagem de erro. Algumas mensagens de erro comuns e possíveis soluções são explicadas abaixo.

Os logs do Docker não contêm mensagens de erro esperadas

Para começar a depurar qualquer problema relacionado ao Docker, você deve começar ativando a saída de depuração do Docker no daemon do Docker em execução nas instâncias do host. Caso esteja usando imagens extraídas do Amazon ECR nas instâncias de contêiner do Amazon ECS, consulte Configuração da saída detalhada do daemon do Docker no Guia do desenvolvedor do Amazon Elastic Container Service.

Erro: "Filesystem Verification Failed (Falha na verificação do sistema de arquivos)" ou "404: Image Not Found (Imagem não encontrada)" ao extrair uma imagem de um repositório do Amazon ECR

Você pode receber o erro Filesystem verification failed ao usar o comando docker pull para extrair uma imagem de um repositório do Amazon ECR com o Docker 1.9 ou versões posteriores. Ou o erro 404: Image not found ao utilizar versões do Docker anteriores à 1.9.

Alguns motivos possíveis e suas explicações são mostrados abaixo.

O disco local está cheio

Se o disco local em que você está executando docker pull estiver cheio, o hash SHA-1 calculado no arquivo local pode ser diferente do calculado pelo Amazon ECR. Verifique se o disco local tem espaço livre suficiente para armazenar a imagem de Docker que você está extraindo. Você também pode excluir imagens antigas para dar espaço às novas. Use o comando docker images para ver uma lista com todas as imagens de Docker obtidas por download localmente, bem como os tamanhos delas.

O cliente não consegue se conectar ao repositório remoto devido a um erro de rede

As chamadas feitas para um repositório do Amazon ECR exigem uma conexão com a Internet. Verifique suas configurações de rede e se outros aplicativos e ferramentas podem acessar recursos na Internet. Se você estiver executando docker pull em uma EC2 instância da Amazon em uma sub-rede privada, verifique se a sub-rede tem uma rota para a Internet. Use um servidor de tradução de endereço de rede (NAT) ou um gateway NAT gerenciado.

Atualmente, as chamadas feitas para um repositório do Amazon ECR também exigem acesso de rede por firewall corporativo para o Amazon Simple Storage Service (Amazon S3). Se sua organização usa software de firewall ou um dispositivo NAT que permite endpoints de serviço, verifique se os endpoints de serviço do Amazon S3 para a sua região atual são permitidos.

Se você usa o Docker atrás de um proxy HTTP, pode configurá-lo com as configurações de proxy apropriadas. Para obter mais informações, consulte proxy HTTP na documentação do Docker.

Erro: "Filesystem Layer Verification Failed (Falha na verificação da camada do sistema de arquivos)" ao extrair imagens do Amazon ECR

Você pode receber o erro image image-name not found ao extrair imagens com o comando docker pull. Se você inspecionar os logs do Docker, poderá ver um erro como este:

filesystem layer verification failed for digest sha256:2b96f...

Esse erro indica que uma ou mais das camadas da sua imagem não foram baixadas. Alguns motivos possíveis e suas explicações são mostrados abaixo.

Você está usando uma versão antiga do Docker

Esse erro pode ocorrer em alguns casos, quando uma versão do Docker anterior à 1.10 é usada. Atualize o cliente do Docker para a versão 1.10 ou posterior.

O cliente encontrou um erro de rede ou de disco

Um disco cheio ou um problema de rede pode impedir que uma ou mais camadas sejam baixadas, como já falamos sobre a mensagem Filesystem verification failed. Siga as recomendações acima para que seu sistema de arquivos não fique cheio e para verificar se você habilitou o acesso ao Amazon S3 de dentro da sua rede.

Erros 403 de HTTP ou o erro "no basic auth credentials (não há credenciais de autenticação básica)" ao enviar ao repositório

Algumas vezes, você poderá receber um erro HTTP 403 (Forbidden) ou a mensagem de erro no basic auth credentials dos comandos docker push ou docker pull, mesmo que tenha feito a autenticação no Docker com o comando aws ecr get-login-password. Veja a seguir algumas causas conhecidas desse problema:

Você fez a autenticação em outra região

As solicitações de autenticação são vinculadas a regiões específicas e não podem ser usadas entre regiões. Por exemplo, se você obtiver um token de autorização de Oeste dos EUA (Oregon), não poderá usá-lo para autenticação nos seus repositórios em Leste dos EUA (Norte da Virgínia). Para resolver o problema, verifique se você recuperou um token de autenticação da mesma região na qual o repositório existe. Para obter mais informações, consulte Autenticação de registro privado no Amazon ECR.

Você realizou uma autenticação para enviar por push para um repositório ao qual não tem permissões

Você não tem as permissões necessárias para realizar o envio por push para o repositório. Para obter mais informações, consulte Políticas de repositório privado no Amazon ECR.

Seu token expirou

O período de expiração padrão para tokens de autorização obtidos usando a operação GetAuthorizationToken é de 12 horas.

Erro no gerenciador de credenciaiswincred

Algumas versões do Docker para Windows usam um gerenciador de credenciais chamadowincred, que não manipula adequadamente o comando de login do Docker produzido por aws ecr get-login-password (para obter mais informações, consulte CredsStorefalhas com repositórios privados). Você pode executar o comando de login do Docker gerado. No entanto, quando você tenta enviar ou extrair imagens, esses comandos falham. Para resolver esse erro, remova o esquema https:// do argumento de registro no comando de login do Docker gerado a partir de aws ecr get-login-password. Um exemplo de comando de login do Docker sem o esquema HTTPS é mostrado abaixo.

docker login -u AWS -p <password> <aws_account_id>.dkr.ecr.<region>.amazonaws.com