Risoluzione dei problemi di Amazon ECR - Amazon ECR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi di Amazon ECR

Questo capitolo ti aiuta a trovare informazioni diagnostiche per Amazon Elastic Container Registry (Amazon ECR) e ti illustra la procedura per risolvere problemi comuni e messaggi di errore.

Abilitazione dell'output di debug di Docker

Per iniziare il debug di problemi relativi a Docker, inizia abilitando l'output di debug di Docker nel daemon Docker in esecuzione sulle tue istanze in hosting. Per maggiori informazioni su come abilitare il debug di Docker se utilizzi immagini estratte da Amazon ECR su istanze di container Amazon ECS, consulta Enabling Docker Debug Output (Abilitazione dell'output di debug di Docker) nella Guida per sviluppatori di Amazon Elastic Container Service.

Abilitazione AWS CloudTrail

Ulteriori informazioni sugli errori restituiti da Amazon ECR possono essere scoperte abilitando AWS CloudTrail, un servizio che registra AWS le chiamate per il tuo AWS account. CloudTrailconsegna file di log a un bucket Amazon S3. Utilizzando le informazioni raccolte da CloudTrail, è possibile determinare quali richieste sono state inoltrate correttamente ai AWS servizi, chi ha effettuato la richiesta, quando è stata effettuata e così via. Per ulteriori informazioni CloudTrail, incluso come attivarlo e trovare i file di registro, consulta la Guida per l'AWS CloudTrail utente. Per ulteriori informazioni sull'utilizzo CloudTrail con Amazon ECR, consultaRegistrazione delle azioni Amazon ECR con AWS CloudTrail.

Ottimizzazione delle prestazioni per Amazon ECR

La sezione che segue contiene raccomandazioni su impostazioni e strategie che puoi utilizzare per ottimizzare le prestazioni quando utilizzi Amazon ECR.

Scegli Docker 1.10 e versioni successive per cogliere i vantaggi degli upload di livelli simultanei

Le immagini Docker sono composte da livelli, ovvero fasi intermedie di compilazione dell'immagine. Ciascuna riga in un Dockerfile porta alla creazione di un nuovo livello. Quando utilizzi Docker 1.10 e versioni successive, per impostazione predefinita Docker invia il maggior numero possibile di livelli come upload simultanei a Amazon ECR, pertanto gli upload risultano più veloci.

Utilizza un'immagine base più piccola

Le immagini predefinite disponibili tramite Docker Hub possono contenere molte dipendenze di cui la tua applicazione non ha bisogno. Potresti pertanto utilizzare un'immagine più piccola creata e gestita da altri nella community Docker oppure creare la tua immagine base utilizzando l'immagine scratch minima di Docker. Per ulteriori informazioni, consulta Creare un'immagine base nella documentazione Docker.

Posiziona le dipendenze che sono meno soggette a variazione all'inizio nel tuo Dockerfile

Docker memorizza i livelli nella cache velocizzando i tempi di compilazione. Se nulla è cambiato in un livello dall'ultima compilazione, Docker utilizza la versione nella cache invece di ricompilare il livello. Tuttavia, ciascun livello dipende dai livelli che lo hanno preceduto. Se un livello cambia, Docker ricompila non solo quel livello, ma anche tutti i livelli che vengono dopo.

Per ridurre al minimo il tempo necessario per ricompilare un file Docker e per ricaricare i livelli, è utile posizionare le dipendenze che cambiano con minore frequenza all'inizio nel Dockerfile. Posiziona quelle che cambiano rapidamente (come il codice sorgente dell'applicazione) più avanti nello stack.

Concatena i comandi per evitare lo storage di file non necessari

I file intermedi creati su un livello rimangono parte di quel livello anche se vengono eliminati in un livello successivo. Considera il seguente esempio:

WORKDIR /tmp RUN wget http://example.com/software.tar.gz RUN wget tar -xvf software.tar.gz RUN mv software/binary /opt/bin/myapp RUN rm software.tar.gz

In questo esempio i livelli creati dal primo e dal secondo comando RUN contengono il file .tar.gz originale e tutti i suoi componenti non compressi anche se il file .tar.gz viene eliminato dal quarto comando RUN. Questi comandi possono essere concatenati in un unico comando RUN affinché i file non necessari non facciano parte dell'immagine Docker finale:

WORKDIR /tmp RUN wget http://example.com/software.tar.gz &&\ wget tar -xvf software.tar.gz &&\ mv software/binary /opt/bin/myapp &&\ rm software.tar.gz
Utilizza l'endpoint regionale più vicino

Puoi ridurre la latenza nell'estrazione delle immagini da Amazon ECR assicurandoti di utilizzare l'endpoint regionale più vicino al luogo in cui la tua applicazione è in esecuzione. Se la tua applicazione è in esecuzione su un'istanza Amazon EC2, puoi utilizzare il seguente codice shell per ottenere la regione dalla zona di disponibilità dell'istanza:

REGION=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone |\ sed -n 's/\(\d*\)[a-zA-Z]*$/\1/p')

La regione può essere passata ai AWS CLI comandi utilizzando il --region parametro o impostata come regione predefinita per un profilo utilizzando il aws configure comando. È inoltre possibile impostare la regione quando si effettuano chiamate utilizzando l' AWS SDK. Per ulteriori informazioni, consulta la documentazione sugli SDK per il tuo linguaggio di programmazione specifico.