DOCKER - 8 Pendant le lancement d un conteneur
Docker ne gère pas que les conteneurs—il y a beaucoup plus qui se passe en arrière-plan lors de l'exécution d'une commande docker run. Nous pensons parfois à tort que Docker fait juste du lancement de conteneurs, mais c'est bien plus complexe que cela.
Quand vous tapez docker run <image>, Docker commence par chercher l'image localement. Si elle n'existe pas dans le cache local, il va vers Docker Hub (le registre distant par défaut) pour la télécharger et la stocker. Si vous ne spécifiez pas une version précise, Docker utilise la tag latest (la dernière version).
Une fois l'image prête, Docker lance un nouveau conteneur basé sur cette image. Il ne copie pas l'image—il crée simplement de nouvelles couches de changement par-dessus les couches de l'image originale. Cela permet à plusieurs conteneurs de partager la même image sans consommer beaucoup d'espace disque. Ensuite, Docker personnalise la mise en réseau : il assigne une adresse IP virtuelle unique au conteneur dans un réseau Docker. Si vous avez spécifié l'option -p (port mapping), Docker configure les règles de transfert de ports. Par exemple, -p 80:80 dit à Docker : "Prends le trafic arrivant sur le port 80 de l'hôte et envoie-le au port 80 du conteneur".
Enfin, Docker lance la commande spécifiée dans le Dockerfile (la directive CMD ou ENTRYPOINT). Cela démarre le processus principal du conteneur. Comme vous le verrez dans les sections suivantes, chacune de ces étapes—recherche, téléchargement, instanciation, mise en réseau, et exécution—sera approfondie séparément pour bien comprendre tout ce qui compose Docker.
En résumé
Lors de l'exécution de la commande `docker container run`, Docker déploie un processus complexe en arrière-plan : il recherche l'image spécifiée localement, et si elle n'existe pas, il la télécharge depuis Docker Hub et la cache. Une fois l'image disponible, Docker crée un nouveau conteneur avec des couches de changement personnalisées, configure la mise en réseau avec une adresse IP virtuelle spécifique, établit le port mapping selon la directive spécifiée, puis exécute la commande définie dans le Dockerfile.
Points clés
- Recherche d'image : Docker commence par chercher l'image localement ; en cas d'absence, il la télécharge depuis Docker Hub
- Versioning automatique : si aucune version n'est précisée, Docker sélectionne automatiquement la version latest (dernière disponible)
- Couches d'isolation : le conteneur n'est pas une copie de l'image, mais repose sur des couches de changement ajoutées par-dessus
- Configuration réseau : Docker attribue une adresse IP virtuelle unique et place le conteneur dans un réseau virtuel Docker
- Port mapping : le passage du flag -p 80:80 redirige le trafic du port 80 de l'hôte vers le port 80 du conteneur
- Exécution de la commande : le conteneur exécute finalement la commande spécifiée dans le Dockerfile
Questions fréquentes
Que se passe-t-il si l'image Docker n'est pas présente localement ?
Docker recherche l'image sur Docker Hub (son référentiel distant par défaut), la télécharge automatiquement et la stocke en cache localement pour les utilisations futures.
Comment Docker gère-t-il les couches lors de la création d'un conteneur ?
Docker ne crée pas une copie complète de l'image. Au lieu de cela, il ajoute des couches de changement personnalisées par-dessus celle-ci, ce qui permet l'isolation et la réutilisabilité efficace de l'image.
Quel est le rôle du port mapping avec le flag -p ?
Le flag -p établit une redirection entre les ports de l'hôte et du conteneur. Par exemple, -p 80:80 redirige tout trafic reçu sur le port 80 de l'hôte vers le port 80 du conteneur.