Résolution des commandes Docker et des problèmes liés à l'utilisation 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.

Résolution des commandes Docker et des problèmes liés à l'utilisation d'Amazon ECR

Dans certains cas, l'exécution d'une commande Docker sur Amazon ECR peut générer un message d'erreur. Vous trouverez ci-après la présentation de certains messages d'erreur courants et des résolutions potentielles.

Les journaux Docker ne contiennent pas les messages d'erreur attendus

Pour commencer à déboguer tout problème lié à Docker, commencez par activer la sortie de débogage Docker sur le démon Docker exécuté sur vos instances hôtes. Si vous utilisez des images extraites d'Amazon ECR sur des instances de conteneur Amazon ECS, consultez la section Configuration de la sortie détaillée du démon Docker dans le manuel Amazon Elastic Container Service Developer Guide.

Erreur : « Filesystem Verification Failed » ou « 404: Image Not Found » lors de l'extraction d'une image d'un référentiel Amazon ECR

Il est possible que vous receviez l'erreur Filesystem verification failed lorsque vous utilisez la commande docker pull afin d'extraire une image d'un référentiel Amazon ECR avec Docker 1.9 ou une version ultérieure. Il est possible que vous receviez l'erreur 404: Image not found lorsque vous utilisez des versions Docker antérieures à 1.9.

Quelques motifs possibles et leurs explications figurent ci-dessous :

Le disque local est plein

Si le disque local sur lequel vous exécutez docker pull est plein, le hachage SHA-1 qui est calculé sur le fichier local peut être différent de celui calculé par Amazon ECR. Vérifiez que le disque local dispose d'un espace libre suffisant pour stocker l'image Docker transmise. Vous pouvez également supprimer d'anciennes images afin de libérer de l'espace pour les nouvelles. Utilisez la commande docker images pour afficher une liste de toutes les images Docker téléchargées localement, ainsi que de leurs tailles.

Le client ne peut pas se connecter au référentiel distant en raison d'une erreur de réseau

Les appels à un référentiel Amazon ECR requièrent une connexion à Internet fonctionnelle. Vérifiez vos paramètres réseau et assurez-vous que les autres outils et applications peuvent accéder aux ressources sur Internet. Si vous exécutez docker pull sur une instance Amazon EC2 dans un sous-réseau privé, vérifiez que le sous-réseau offre un acheminement vers Internet. Utilisez un serveur de traduction d'adresses réseau (NAT) ou une passerelle NAT gérée.

Pour l'instant, les appels d'un référentiel Amazon ECR ont également besoin d'un accès réseau via le pare-feu de votre entreprise à Amazon Simple Storage Service (Amazon S3). Si votre organisation utilise un logiciel de pare-feu ou un appareil NAT qui autorise les points de terminaison de service, vérifiez que les points de terminaison de service Amazon S3 de votre région actuelle sont autorisés.

Si vous utilisez Docker derrière un proxy HTTP, vous pouvez configurer Docker avec les paramètres de proxy appropriés. Pour en savoir plus, consultez Proxy HTTP dans la documentation Docker.

Erreur : « Filesystem Layer Verification Failed » lors de l'extraction d'images d'Amazon ECR

Il est possible que vous receviez l'erreur image image-name not found lors de l'extraction d'images à l'aide de la commande docker pull. Si vous inspectez les journaux de Docker, vous verrez peut-être une erreur similaire à ce qui suit :

filesystem layer verification failed for digest sha256:2b96f...

Cette erreur indique qu'une ou plusieurs couches de votre image n'ont pas pu être téléchargées. Quelques motifs possibles et leurs explications figurent ci-dessous :

Vous utilisez une version plus ancienne de Docker

Cette erreur peut se produire dans un petit pourcentage des cas lors de l'utilisation d'une version de Docker antérieure à 1.10. Dans ce cas, mettez à niveau le client Docker vers la version 1.10 ou une version ultérieure.

Votre client a rencontré une erreur de réseau ou de disque

Un disque plein ou un problème de réseau peuvent empêcher le téléchargement d'une ou de plusieurs couches, comme nous l'avons vu pour le message Filesystem verification failed. Suivez les recommandations ci-dessus pour veiller à ce que votre système de fichiers ne soit pas plein et à autoriser l'accès à Amazon S3 depuis votre réseau.

Erreurs HTTP 403 ou « no basic auth credentials » lors de la transmission au référentiel

Vous êtes susceptible de recevoir une erreur HTTP 403 (Forbidden) ou le message d'erreur no basic auth credentials des commandes docker push ou docker pull, même si vous vous êtes authentifié correctement auprès de Docker à l'aide de la commande aws ecr get-login-password. Voici quelques causes connues de ce problème :

Vous vous êtes authentifié auprès d'une région différente

Les demandes d'authentification sont liées à des régions spécifiques et ne peuvent pas être utilisées d'une région à l'autre. Par exemple, si vous obtenez un jeton d'autorisation de la région USA Ouest (Oregon), vous ne pourrez pas l'utiliser pour vous authentifier auprès des référentiels de la région USA Est (Virginie du Nord). Pour résoudre le problème, vérifiez que vous avez récupéré un jeton d'authentification à partir de la région dans laquelle votre référentiel se trouve. Pour plus d’informations, consultez Authentification du registre privé dans Amazon ECR.

Vous vous êtes authentifié pour effectuer une transmission vers un référentiel pour lequel vous n'avez pas d'autorisations

Vous n'avez pas les autorisations nécessaires pour effectuer une transmission vers le référentiel. Pour plus d’informations, consultez Politiques relatives aux référentiels privés dans Amazon ECR.

Votre jeton a expiré

La période d'expiration du jeton d'autorisation par défaut pour les jetons obtenus à l'aide de l'opération GetAuthorizationToken est de 12 heures.

Bogue dans le gestionnaire des informations d'identification wincred

Certaines versions de Docker pour Windows utilisent un gestionnaire des informations d'identification nommé wincred, qui ne gère pas correctement la commande de connexion de Docker produite par aws ecr get-login-password (pour plus d'informations, consultez https://github.com/docker/docker/issues/22910). Vous pouvez exécuter la commande de connexion de Docker qui est générée, mais lorsque vous tentez de transmettre ou d'extraire des images, ces commandes échouent. Vous pouvez contourner ce bogue en supprimant le schéma https:// de l'argument de registre dans la commande de connexion de Docker sortie d'aws ecr get-login-password. Voici un exemple de commande de connexion Docker sans le schéma HTTPS.

docker login -u AWS -p <password> <aws_account_id>.dkr.ecr.<region>.amazonaws.com