Perché Code Engine non può eseguire il pull di un'immagine?
Quando si distribuisce un'applicazione Code Engine o si esegue un processo, viene visualizzato un messaggio di errore contenente il testo " Unable to pull the image".
Per risolvere questo problema, conferma che l'immagine esiste e che hai accesso all'immagine. Verificare che le seguenti condizioni siano soddisfatte.
-
Per confermare che l'immagine per la tua applicazione o il tuo lavoro esiste, esamina il messaggio di errore per informazioni sull'errore.
-
Per distribuire applicazioni o eseguire lavori in Code Engine, devi prima creare un'immagine del contenitore che abbia tutte le risorse di runtime che la tua applicazione deve eseguire, come le librerie di runtime. Puoi utilizzare molti metodi diversi per creare l'immagine del contenitore, inclusa la creazione della tua applicazione dal codice sorgente utilizzando la funzione delle immagini del contenitore di build disponibile in Code Engine. La tua immagine può essere scaricata da un registro di immagini pubblico o privato. Per ulteriori informazioni sull'accesso ai registri privati, vedi Aggiunta dell'accesso a un registro del contenitore privato.
-
Se utilizzi il comando
ibmcloud ce app create,ibmcloud ce job createoibmcloud ce jobrun submitnella CLI Code Engine, specifica il nome dell'immagine utilizzata per la tua applicazione o il tuo lavoro utilizzando il formatoREGISTRY/NAMESPACE/REPOSITORY:TAGdoveREGISTRYeTAGsono facoltativi. SeREGISTRYnon è specificato, il valore predefinito èdocker.io.SeTAGnon viene specificato, il valore predefinito èlatest. Esaminare questi comandi per ulteriori informazioni sul formato da utilizzare per specificare il registro delle immagini.
Provare le seguenti soluzioni per risolvere il problema.
-
Non si dispone dell'autorizzazione. Se non si dispone delle autorizzazioni per accedere all'immagine di riferimento, la creazione dell'applicazione non viene completata e si verifica un errore. Ricevi un messaggio di errore che contiene
Unable to pulll'immagine.-
Per confermare che puoi accedere all'immagine di riferimento, verifica l'ubicazione della tua immagine e conferma di disporre delle autorizzazioni per accedere all'immagine.
-
Controlla di aver aggiunto l'accesso al registro a Code Engine e che stai utilizzando il segreto di registro corretto, se l'immagine si trova in un registro di immagini del contenitore, come ad esempio Docker Hub o IBM Cloud® Container Registry. Per ulteriori informazioni sull'utilizzo delle immagini in un registro delle immagini del contenitore, vedi Aggiunta dell'accesso a un registro del contenitore privato.
-
-
La quota del registro del contenitore è stata superata.
- Verificare la presenza di un errore
ImagePullBackOffeseguendo il comandoibmcloud ce jobrun events --jobrun JOBRUN_NAME; ad esempio,
ibmcloud ce jobrun events --jobrun myjobrun- Se l'errore negli eventi di sistema è simile al seguente messaggio, questo errore indica che è stata superata la quota del registro. Prendere in considerazione l'aggiornamento del piano. Per informazioni sui piani di servizio e sui limiti di quota IBM Cloud® Container Registry, vedi Informazioni su 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. - Verificare la presenza di un errore
-
Il registro del contenitore richiede l'autenticazione.
- Se l'errore negli eventi di sistema è simile al seguente messaggio, questo errore indica che l'accesso al registro non esiste o potrebbe richiedere l'autorizzazione. Verificare che le proprie credenziali dispongano dell'accesso appropriato al 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. -
Code Engine non trova la tua immagine nel registro del contenitore.
In questo scenario, la tua immagine esiste e l'accesso al registro funziona, ma Code Engine trova un'immagine diversa da quella prevista per una specifica revisione dell'applicazione. Il digest dell'immagine del registro del contenitore non corrisponde al digest previsto dell'immagine per una revisione dell'applicazione.
Quando distribuisci la tua applicazione o la nuova revisione dell'applicazione, viene scaricata e distribuita l'ultima versione della tua immagine del contenitore di riferimento, a meno che non venga specificata una tag per l'immagine. Se viene specificata una tag per l'immagine, l'immagine contrassegnata viene utilizzata per la distribuzione.
Se crei una versione più recente dell'immagine con la stessa tag dell'immagine originale a cui fa riferimento la tua applicazione, l'immagine originale viene sovrascritta nel registro del contenitore. Tuttavia, Code Engine non riesce a trovare questa immagine più recente perché l'immagine più recente ha un digest diverso rispetto al digest per la revisione dell'applicazione. L'immagine associata alla tua specifica revisione dell'applicazione ha un digest del registro del contenitore univoco e Code Engine utilizza questo digest per la durata della tua revisione dell'applicazione.
Se crei una versione più recente di un'immagine con la stessa tag dell'immagine originaria, l'immagine originale viene sovrascritta nel registro del contenitore e diventa senza tag. L'immagine più recente è taggata e questa immagine più recente ha un digest diverso. La tua applicazione Code Engine non utilizza questa immagine più recente perché l'immagine più recente ha un digest diverso rispetto al digest dell'immagine a cui fa riferimento la revisione dell'applicazione. Code Engine può ancora creare nuove istanze della revisione dell'applicazione se l'immagine a cui si faceva riferimento in origine esiste ancora. Se l'immagine a cui la tua applicazione fa originariamente riferimento non esiste, Code Engine non trova il digest dell'immagine previsto e l'applicazione ha esito negativo perché non può eseguire il pull dell'immagine. Fai attenzione quando ripulisci ed elimini le immagini e quando configuri le politiche di conservazione per il registro del contenitore. La sovrascrittura di un'immagine con tag non è problematica. Tuttavia, i problemi possono verificarsi se si sovrascrive un'immagine con una politica di conservazione abilitata che elimina l'immagine senza tag o se si attiva manualmente un cleanup di immagini senza tag.
Se l'errore negli eventi di sistema è simile al seguente messaggio, questo errore indica che Code Engine non può estrarre l'immagine dallo spazio dei nomi del registro. Controlla che il tag per la tua immagine punti al digest dell'immagine corretto.
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.Per utilizzare un'immagine più recente di cui è stato eseguito il push con la stessa tag della tua applicazione, devi aggiornare la tua applicazione per creare una nuova revisione dell'applicazione che faccia riferimento alla nuova immagine con tag.
-
Code Engine non può autenticarsi al registro del contenitore.
In questo scenario, l'immagine esiste, l'accesso al registro funziona e il segreto del registro configurato è valido, ma Code Engine non è in grado di autenticarsi al registro del contenitore. Potrebbe essere visualizzato un messaggio di errore simile a quello mostrato di seguito:
ErrImagePull : failed to pull and unpack image "<image name>": failed to resolve reference "<image name>": failed to authorize: failed to fetch oauth token: unexpected status from GET request to...Verificare se è stato abilitato
Restrict IP address accessper il proprio account (vedere Consentire indirizzi IP specifici ). Se abilitato, solo gli indirizzi IP consentiti possono autenticarsi a IBM Cloud®, per il proprio account. Questo impedirà a Code Engine di autenticarsi al registro del contenitore e quindi non sarà in grado di estrarre l'immagine. È necessario aggiungere gli indirizzi IPpubliceprivatedel progetto Code Engine. Vedere Code Engine indirizzi IP pubblici e privati per informazioni su come identificare questi indirizzi IP.
Passi successivi
Per ulteriori informazioni sulla risoluzione dei problemi delle immagini, vedi Debug delle immagini.
Per ulteriori informazioni sulla risoluzione dei problemi di applicazioni, lavori e build con considerazioni per le immagini, vedi i seguenti argomenti.
- Risoluzione dei problemi delle applicazioni - Perché la creazione della mia applicazione non riesce?
- Risoluzione dei problemi delle applicazioni - Perché la mia applicazione ha smesso di funzionare?
- Risoluzione dei problemi delle applicazioni - Perché la mia applicazione non è mai pronta?
- Risoluzione dei problemi dei lavori - Perché il lavoro non viene eseguito?
- Risoluzione dei problemi relativi ai lavori - Perché non posso inoltrare un lavoro eseguito con la CLI
- Risoluzione dei problemi relativi alle build - La build non riesce nella fase di build e push
- Risoluzione dei problemi delle build - La build non riesce quando viene superato il limite di memoria temporaneo
- Risoluzione dei problemi delle build - Build non riesce nel passo di origine