Comment résoudre l'erreur 'network timed out' lors du téléchargement d'images

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Docker est une plateforme de conteneurisation puissante qui simplifie le déploiement et la gestion des applications. Cependant, les utilisateurs peuvent parfois rencontrer l'erreur 'network timed out' (délai d'attente réseau dépassé) lorsqu'ils tentent de télécharger des images Docker. Ce tutoriel vous guidera tout au long du processus de compréhension du problème, de diagnostic et de mise en œuvre de solutions efficaces pour résoudre l'erreur 'network timed out'.

Comprendre le téléchargement d'images Docker

Docker est une plateforme de conteneurisation populaire qui permet aux développeurs de packager et de déployer des applications de manière cohérente et reproductible. L'une des opérations fondamentales dans Docker consiste à télécharger des images depuis un registre, comme Docker Hub, pour créer des conteneurs.

Qu'est-ce que le téléchargement d'images Docker ?

Le téléchargement d'images Docker est le processus de récupération d'une image Docker depuis un registre et de son stockage localement sur l'hôte Docker. Cela vous permet d'utiliser l'image pour créer et exécuter des conteneurs.

Processus de téléchargement d'images Docker

Le processus de téléchargement d'une image Docker implique généralement les étapes suivantes :

  1. Spécification de l'image : Vous spécifiez l'image que vous souhaitez télécharger, généralement au format <repository>/<image>:<tag>. Par exemple, ubuntu:22.04.
  2. Contact avec le registre : Le client Docker contacte le registre spécifié (par exemple, Docker Hub) pour demander l'image.
  3. Téléchargement des couches d'image : Le registre répond en fournissant les couches d'image nécessaires, qui sont ensuite téléchargées et stockées localement sur l'hôte Docker.
  4. Création de l'image : Une fois que toutes les couches ont été téléchargées, Docker crée l'image localement, vous permettant de l'utiliser pour créer et exécuter des conteneurs.
sequenceDiagram participant Docker Client participant Docker Registry Docker Client->>Docker Registry: Request image Docker Registry-->>Docker Client: Provide image layers Docker Client->>Docker Client: Download and store image layers Docker Client->>Docker Client: Create local image

Avantages du téléchargement d'images Docker

Le téléchargement d'images Docker depuis un registre offre plusieurs avantages :

  1. Cohérence : Le téléchargement d'images garantit que votre application s'exécute dans le même environnement sur différents systèmes, favorisant la cohérence et la reproductibilité.
  2. Efficacité : L'architecture d'image en couches de Docker vous permet de réutiliser les couches communes, réduisant ainsi la quantité de données à télécharger.
  3. Évolutivité : Le téléchargement d'images depuis un registre central vous permet de faire évoluer votre application en déployant facilement des conteneurs supplémentaires sur différents hôtes.

En comprenant le processus et les avantages du téléchargement d'images Docker, vous pouvez gérer et déployer efficacement vos applications à l'aide de Docker.

Diagnostic de l'erreur 'network timed out' (délai d'attente réseau dépassé)

Lorsque vous téléchargez des images Docker, vous pouvez parfois rencontrer l'erreur "network timed out", qui indique que le client Docker n'a pas été en mesure d'établir une connexion avec le registre dans le délai de temporisation spécifié. Ce problème peut être causé par divers problèmes liés au réseau.

Identification de l'erreur

L'erreur "network timed out" apparaît généralement comme suit :

$ docker pull ubuntu:22.04
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled (Client.Timeout exceeded while awaiting headers)

Ce message d'erreur suggère que le client Docker n'a pas été en mesure d'établir une connexion avec le registre Docker dans le délai de temporisation spécifié.

Causes potentielles

L'erreur "network timed out" peut être causée par plusieurs facteurs, notamment :

  1. Problèmes de connectivité réseau : Des problèmes de connexion réseau, tels qu'une connectivité Internet intermittente, des restrictions de pare-feu ou des paramètres de proxy, peuvent empêcher le client Docker de se connecter avec succès au registre.
  2. Disponibilité du registre : Le registre Docker depuis lequel vous essayez de télécharger des images peut être temporairement indisponible ou subir un trafic élevé, entraînant des délais d'attente dépassés.
  3. Contraintes de ressources : Si l'hôte Docker manque de ressources système (par exemple, CPU, mémoire ou espace disque), il peut ne pas avoir suffisamment de capacité pour gérer le processus de téléchargement d'image dans le délai de temporisation.
  4. Configuration du proxy : Des paramètres de proxy incorrects ou mal configurés sur l'hôte Docker peuvent interférer avec le processus de téléchargement d'image.
  5. Résolution DNS : Des problèmes de résolution DNS sur l'hôte Docker peuvent empêcher le client de se connecter avec succès au registre.

En comprenant ces causes potentielles, vous pouvez mieux diagnostiquer et résoudre l'erreur "network timed out" lors du téléchargement d'images Docker.

Résolution des problèmes 'network timed out' (délai d'attente réseau dépassé)

Une fois que vous avez identifié les causes potentielles de l'erreur "network timed out" lors du téléchargement d'images Docker, vous pouvez essayer les solutions suivantes pour résoudre le problème.

Vérification de la connectivité réseau

Assurez-vous que l'hôte Docker a une connexion réseau stable et fiable. Vous pouvez tester la connectivité en exécutant la commande suivante :

$ ping docker.com
PING docker.com (104.18.122.50) 56(84) bytes of data.
64 bytes from 104.18.122.50 (104.18.122.50): icmp_seq=1 ttl=55 time=10.2 ms

Si la commande ping échoue ou affiche une latence élevée, il peut y avoir un problème réseau à résoudre.

Vérification de la disponibilité du registre

Vérifiez l'état du registre Docker depuis lequel vous essayez de télécharger des images. Vous pouvez utiliser un outil comme curl pour tester la disponibilité du registre :

$ curl https://registry-1.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}

Si le registre est indisponible ou rencontre des problèmes, vous devrez peut-être attendre que le problème soit résolu ou essayer un autre registre.

Augmentation des limites de délai d'attente

Vous pouvez essayer d'augmenter les limites de délai d'attente du client Docker pour permettre plus de temps au processus de téléchargement d'image de se terminer. Modifiez le fichier de configuration du démon Docker (/etc/docker/daemon.json) et ajoutez les lignes suivantes :

{
  "timeout": 120
}

Cela définira le délai d'attente à 120 secondes (2 minutes). Redémarrez le service Docker pour que les modifications prennent effet.

$ sudo systemctl restart docker

Effacement du cache Docker

L'effacement du cache d'images Docker peut parfois résoudre les problèmes liés au réseau. Vous pouvez le faire en exécutant les commandes suivantes :

$ docker system prune --all --force --volumes
$ docker pull ubuntu:22.04

La commande docker system prune supprimera toutes les données inutilisées, y compris les images, les conteneurs et les volumes.

Vérification des paramètres de proxy

Si l'hôte Docker est derrière un proxy, assurez-vous que les paramètres de proxy sont correctement configurés dans le fichier de configuration du démon Docker (/etc/docker/daemon.json) :

{
  "proxies": {
    "default": {
      "httpProxy": "http://proxy.example.com:8080",
      "httpsProxy": "http://proxy.example.com:8080",
      "noProxy": "localhost,127.0.0.1"
    }
  }
}

Redémarrez le service Docker après avoir apporté des modifications aux paramètres de proxy.

En suivant ces étapes, vous devriez être en mesure de résoudre l'erreur "network timed out" lors du téléchargement d'images Docker.

Résumé

Dans ce tutoriel complet sur Docker, vous avez appris à résoudre l'erreur 'network timed out' (délai d'attente réseau dépassé) lors du téléchargement d'images. En comprenant les causes sous-jacentes, en diagnostiquant le problème et en appliquant les solutions appropriées, vous pouvez garantir un processus de téléchargement d'images Docker fluide et fiable, vous permettant de maintenir un environnement Docker robuste et efficace.