Dépannage d'Amazon ECR - Amazon ECR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Dépannage d'Amazon ECR

Ce chapitre vous aide à rechercher des informations de diagnostic pour Amazon Elastic Container Registry (Amazon ECR) et détaille les étapes de résolution des problèmes courants et des messages d'erreur.

Activer la sortie de débogage Docker

Pour commencer à déboguer tout problème lié à Docker, vous devez commencer par activer la sortie de débogage Docker sur le démon Docker exécuté sur les instances de l'hôte. Pour en savoir plus sur l'activation du débogage Docker si vous utilisez des images extraites d'Amazon ECR sur les instances de conteneur Amazon ECS, consultez Activer la sortie de débogage Docker dans le guide du développeur de service de conteneur Amazon Elastic.

Activant AWS CloudTrail

Des informations supplémentaires sur les erreurs renvoyées par Amazon ECR peuvent être découvertes en activant AWS CloudTrail un service qui enregistre les AWS appels pour votre AWS compte. CloudTrailfournit des fichiers journaux à un compartiment Amazon S3. En utilisant les informations collectées par CloudTrail, vous pouvez déterminer quelles demandes ont été adressées avec succès aux AWS services, qui a fait la demande, quand elle a été faite, etc. Pour en savoir plus CloudTrail, notamment sur la façon de l'activer et de trouver vos fichiers journaux, consultez le guide de AWS CloudTrail l'utilisateur. Pour plus d'informations sur l'utilisation CloudTrail avec Amazon ECR, consultezJournalisation des actions Amazon ECR avecAWS CloudTrail.

Optimisation des performances pour Amazon ECR

La section suivante propose des recommandations sur les paramètres et les politiques susceptibles d'être utilisés afin d'optimiser les performances lors de l'utilisation d'Amazon ECR.

Utiliser Docker 1.10 et des versions ultérieures afin de bénéficier des chargements de couches simultanés

Les images Docker sont composées de couches qui constituent des étapes de création intermédiaires de l'image. Chaque ligne d'un fichier Docker crée un nouvelle couche. Lorsque vous utilisez Docker 1.10 et les versions ultérieures, Docker transmet par défaut autant de couches qu'il y a eu de chargements dans Amazon ECR, ce qui permet d'accélérer les temps de chargement.

Utiliser une image de base plus petite

Les images par défaut disponibles via Docker Hub peuvent contenir de nombreuses dépendances dont votre application n'a pas besoin. Nous vous conseillons d'utiliser une image plus petite créée et gérée par d'autres personnes de la communauté Docker, ou de créer votre propre image de base à l'aide d'une image de Docker réduite au minimum. Pour en savoir plus, consultez Créer une image de base dans la documentation Docker.

Placement des dépendances qui changent le moins plus tôt dans votre fichier Docker

Docker met en cache des couches, ce qui accélère les temps de création. S'il n'y a eu aucun changement sur une couche depuis la dernière création, Docker utilisera la version mise en cache au lieu de récréer la couche. Toutefois, chaque couche est dépendante des couches précédentes. Si une couche change, Docker recompilera non seulement cette couche, mais également toutes les couches ultérieures.

Afin de réduire le temps nécessaire à la recréation d'un fichier Docker et au rechargement des couches, pensez à placer les dépendances qui changent le moins souvent plus tôt dans votre fichier Docker. Placez les dépendances qui changent rapidement (par exemple, le code source de votre application) plus tard dans la pile.

Chaîner des commandes pour éviter le stockage de fichier inutile

Les fichiers intermédiaires créés sur une couche continuent à faire partie de cette couche, même s'ils sont supprimés dans une couche ultérieure. Prenez l’exemple suivant :

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

Dans cet exemple, les couches créées par la première et la deuxième commande RUN contiennent le fichier .tar.gz d'origine et l'ensemble de son contenu non compressé. Et ce, même si le fichier .tar.gz est supprimé par la quatrième commande RUN. Ces commandes peuvent être regroupées dans une seule instruction RUN afin d'éviter que ces fichiers inutiles fassent partie de l'image 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
Utiliser le point de terminaison régional le plus proche

Vous pouvez réduire la latence d'extraction des images d'Amazon ECR en veillant à utiliser le point de terminaison régional le plus proche de l'emplacement d'exécution de votre application. Si votre application est exécutée sur une instance Amazon EC2, vous pouvez utiliser le code shell suivant afin d'obtenir la région de la zone de disponibilité de l'instance :

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

La région peut être transmise aux AWS CLI commandes à l'aide du --region paramètre ou définie comme région par défaut pour un profil à l'aide de la aws configure commande. Vous pouvez également définir la région lorsque vous passez des appels à l'aide du AWS SDK. Pour en savoir plus , consultez la documentation du kit SDK correspondant au langage de programmation utilisé.