IBM Cloud Docs
Por que o Code Engine não pode extrair uma imagem?

Por que o Code Engine não pode extrair uma imagem?

Ao implementar um app Code Engine ou executar uma tarefa, você recebe uma mensagem de erro que contém Unable to pull the image.

Para solucionar esse problema, confirme se a imagem existe, e se você tem acesso à imagem. Verifique se as condições a seguir foram atendidas

  • Para confirmar que a imagem para o seu app ou tarefa existe, revise a mensagem de erro para obter informações sobre a falha

  • Para implementar aplicativos ou executar tarefas no Code Engine, é necessário primeiro criar uma imagem de contêiner que tenha todos os artefatos de tempo de execução que seu aplicativo precisa executar, como bibliotecas de tempo de execução. É possível usar muitos métodos diferentes para criar a imagem de contêiner, incluindo a construção de seu app por meio do código-fonte usando o recurso de imagens de contêiner de construção disponível no Code Engine. A sua imagem pode ser transferida por download por meio de um registro de imagem público ou privado. Para obter mais informações sobre como acessar registros privados, consulte Incluindo acesso a um registro privado de contêiner.

  • Se você usar o comando ibmcloud ce app create, ibmcloud ce job create ou ibmcloud ce jobrun submit na CLI do Code Engine, especifique o nome da imagem que é usada para seu aplicativo ou tarefa usando o formato REGISTRY/NAMESPACE/REPOSITORY:TAG em que REGISTRY e TAG são opcionais. Se REGISTRY não for especificado, o padrão será docker.io. Se TAG não for especificado, o padrão será latest Revise esses comandos para obter mais informações sobre o formato a ser usado para especificar o registro de imagem

Tente as seguintes soluções para resolver seu problema.

  1. Você não é autorizado. Se você não tiver as permissões para acessar a imagem referida, a criação do aplicativo não será concluída e ocorrerá um erro. Você recebe uma mensagem de erro que contém: Unable to pull.

    • Para confirmar se é possível acessar a imagem referenciada, verifique o local da sua imagem e confirme se você tem permissões para acessá-la.

    • Verifique se você incluiu o acesso de registro ao Code Engine e se você está usando o segredo de registro correto, se a imagem estiver localizada em um registro de imagem de contêiner, como Docker Hub ou IBM Cloud® Container Registry. Para obter mais informações sobre como trabalhar com imagens em um registro de imagem de contêiner, consulte incluindo acesso a um registro de contêiner privado.

  2. A cota de registro do contêiner foi excedida

      ibmcloud ce jobrun events --jobrun myjobrun
    
    • Se o erro nos eventos do sistema for semelhante à mensagem a seguir, esse erro indicará que a cota de registro foi excedida Considere fazer upgrade do seu plano. Para obter informações sobre os planos de serviço e limites de cota do IBM Cloud® Container Registry, consulte Sobre IBM Cloud Container Registry.
    403 Forbidden - Server message: denied: You have exceeded your pull traffic quota for the current month. Review your pull traffic quota and pricing plan.
    
  3. O registro de contêiner precisa de autenticação..

    • Se o erro nos eventos do sistema for semelhante à mensagem a seguir, esse erro indicará que o acesso ao registro não existe ou pode requerer autorização Verifique se suas credenciais têm acesso apropriado ao registro.
    Failed to pull image "<image_name>": rpc error: code = Unknown desc = failed to pull and unpack image "<image_name:image_tag>": failed to resolve reference <image_name:image_tag>": pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed.
    
  4. Code Engine não pode localizar sua imagem em seu registro de contêiner.

    Nesse cenário, sua imagem existe e o acesso de registro funciona, mas Code Engine localiza uma imagem diferente da imagem que estava esperando para uma revisão de aplicativo específica. A compilação de imagem do registro de contêiner não corresponde à compilação esperada da imagem para uma revisão do aplicativo

    Ao implementar seu aplicativo ou nova revisão de app, a versão mais recente de sua imagem de contêiner referenciada é transferida por download e implementada, a menos que uma tag seja especificada para a imagem. Se uma tag for especificada para a imagem, a imagem marcada será usada para a implementação.

    Se você criar uma versão mais recente da imagem com a mesma tag da imagem original que foi referenciada por seu aplicativo, a imagem original será sobrescrita no registro de contêiner. No entanto, Code Engine não pode localizar essa imagem mais recente porque a imagem mais recente tem uma compilação diferente da compilação para a revisão do aplicativo. A imagem associada à sua revisão de aplicativo específica tem uma compilação de registro de contêiner exclusiva e o Code Engine usa essa compilação para a vida de sua revisão de aplicativo.

    Se você criar uma versão mais recente de uma imagem com a mesma tag que a imagem original, a imagem original será sobrescrita no registro de contêiner e será desmarcada. A imagem mais recente é identificada e essa imagem mais recente tem uma compilação diferente.... Seu aplicativo Code Engine não usa essa imagem mais nova porque a imagem mais recente tem uma compilação diferente da da imagem que é referenciada pela revisão do aplicativo. Code Engine ainda pode criar novas instâncias da revisão do aplicativo se a imagem que foi referenciada originalmente ainda existir. Se a imagem originalmente referenciada por seu aplicativo não existir, o Code Engine não localizará a compilação de imagem esperada e o aplicativo falhará porque não pode puxar a imagem. Tome cuidado ao limpar e excluir imagens e ao configurar políticas de retenção para o seu registro de contêiner Sobrescrever uma imagem identificada não é problemático.. No entanto, podem ocorrer problemas se você sobrescrever uma imagem com uma política de retenção ativada que exclui a imagem não identificada ou se acionar manualmente uma limpeza de imagens não identificadas.

    Se o erro nos eventos do sistema for semelhante à mensagem a seguir, esse erro indica que o Code Engine não pode extrair a imagem do namespace de registro. Verifique se a tag para a sua imagem aponta para a compilação de imagem correta

    Unable to pull the image. Image "<image_name>" does not exist in the registry namespace. Check your registry repository and tag. If the image exists in the repository, check whether the specified tag points to the correct image digest.
    

    Para usar uma imagem mais recente que foi enviada por push com a mesma tag com seu aplicativo, deve-se atualizar seu aplicativo para criar uma nova revisão de aplicativo que referencie a imagem identificada mais recente.

Próximas etapas

Para saber mais sobre as imagens de resolução de problemas, consulte Depurando imagens

Para obter mais informações sobre resolução de problemas de aplicativos, tarefas e construções com considerações para imagens, consulte os tópicos a seguir.