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á.
Otimização do performance para o Amazon ECR
Você pode usar as recomendações a seguir sobre configurações e estratégias para otimizar a performance ao usar o Amazon ECR.
- Use o Docker 1.10 e versões posteriores para utilizar os uploads simultâneos da camada
-
As imagens de Docker são compostas por camadas, que são estágios de compilação intermediários da imagem. Cada linha em um Dockerfile resulta na criação de uma nova camada. Quando você usa o Docker 1.10 e versões posteriores, o Docker envia por padrão o maior número possível de camadas como carregamentos simultâneos ao Amazon ECR, o que resulta em tempos de carregamento mais rápidos.
- Use uma imagem de base menor
-
As imagens padrão disponíveis por meio do Docker Hub podem conter muitas dependências das quais seu aplicativo não precisa. Considere o uso de uma imagem menor criada e mantida por outras pessoas da comunidade do Docker ou compile sua própria imagem de base usando a imagem mínima de scratch do Docker. Para obter mais informações, consulte Criar uma imagem de base
na documentação do Docker. - Coloque as dependências que mudam menos no início do Dockerfile
-
O Docker armazena as camadas em cache, o que acelera os tempos de compilação. Se nada tiver sido alterado na camada desde a última compilação, o Docker usará a versão armazenada em cache, em vez de compilar a camada novamente. No entanto, cada camada depende das camadas que vieram antes dela. Se uma camada mudar, o Docker a compilará novamente, bem como todas as camadas que vierem depois dela.
Para minimizar o tempo necessário para compilar um arquivo de Dockerfile e fazer upload das camadas novamente, considere colocar as dependências que mudam com menos frequência no início do Dockerfile. E, aquelas que mudam rapidamente, (como o código-fonte do seu aplicativo) mais à frente na pilha.
- Encadeie os comandos para evitar o armazenamento desnecessário de arquivos
-
Os arquivos intermediários criados em uma camada continuarão fazendo parte dela, mesmo que sejam excluídos em uma camada subsequente. Considere o seguinte exemplo:
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
Neste exemplo, as camadas criadas pelo primeiro e pelo segundo comando EXECUTAR contêm o arquivo original .tar.gz e todos os seus conteúdos descompactados. Embora o arquivo .tar.gz seja excluído pelo quarto comando EXECUTAR. Esses comandos podem ser encadeados em uma única instrução EXECUTAR para garantir que esses arquivos desnecessários não façam parte da imagem de Docker final:
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
- Use o endpoint regional mais próximo
-
Você pode reduzir a latência na extração de imagens do Amazon ECR usando o endpoint regional mais próximo de onde seu aplicativo está sendo executado. Se seu aplicativo estiver sendo executado em uma EC2 instância da Amazon, você pode usar o seguinte código shell para obter a região da zona de disponibilidade da instância:
REGION=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone |\ sed -n 's/\(\d*\)[a-zA-Z]*$/\1/p')
A região pode ser passada para AWS CLI comandos usando o --region parâmetro ou definida como a região padrão para um perfil usando o aws configure comando. Você também pode definir a região ao fazer chamadas usando o AWS SDK. Para obter mais informações, consulte a documentação do SDK para a sua linguagem de programação específica.