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à.
Puoi utilizzare i seguenti consigli su impostazioni e strategie per ottimizzare le prestazioni quando usi 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.