6.1 Images (Images)
Pour bosser efficacement avec Docker, faut piger quelques termes clés : les images, conteneurs et registres. Allez, on plonge dedans pour comprendre à quoi ça sert et comment tout ça fonctionne ensemble.
Image Docker — c'est un template utilisé pour créer les conteneurs. Une image contient tout ce qu'il faut pour faire tourner une application : le système d'exploitation, l'application elle-même, les bibliothèques et dépendances, ainsi que les fichiers de config. En gros, si on fait une analogie avec la POO : l'image Docker est une classe, et le conteneur est un objet de cette classe. Les images se créent via un Dockerfile — un fichier texte qui décrit les étapes pour construire l'image.
Caractéristiques principales des images :
- Structure par couches: les images sont faites de plusieurs couches. Y’a une couche de base, et chaque suivante représente des modifs par rapport à la précédente. Ça fait gagner de la place et réduit le temps de téléchargement.
- Réutilisation: la même image peut servir à créer plein de conteneurs.
- Portabilité: tu peux balader tes images entre différentes machines, ce qui est nickel pour le dev, les tests et le déploiement dans divers environnements.
Exemples d'utilisation des images :
Créer sa propre image : tu peux fabriquer ton image maison en écrivant un Dockerfile où tu précises les configs de ton appli et ses dépendances.
FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]
Utiliser une image prête : tu peux choper des images sur Docker Hub pour déployer vite fait des applis standard comme des serveurs web ou des bases de données.
docker pull nginx
Cette commande télécharge l'image nginx depuis le registre public Docker Hub.
6.2 Conteneurs (Containers)
Un conteneur Docker, c'est une instance en cours d'exécution d'une image. Les conteneurs isolent les applications et leurs dépendances dans un environnement d'exécution distinct, ce qui permet de les exécuter indépendamment du système hôte et des autres conteneurs. Les conteneurs sont légers puisqu'ils utilisent le noyau du système d'exploitation hôte, au lieu de créer un noyau séparé comme dans les machines virtuelles.
Caractéristiques principales des conteneurs :
- Isolation : les conteneurs isolent les applications, assurant leur fonctionnement indépendant et évitant les conflits de dépendances.
- Légèreté : les conteneurs consomment moins de ressources comparé aux machines virtuelles, car ils ne nécessitent pas de système d'exploitation séparé.
- Démarrage rapide : les conteneurs se lancent et s'arrêtent beaucoup plus rapidement que les machines virtuelles, ce qui les rend idéaux pour des environnements dynamiques et pour le scaling.
Exemples d'utilisation des conteneurs :
Lancement d'un conteneur : tu peux lancer un conteneur à partir d'une image en utilisant la commande docker run.
docker run -d -p 80:80 --name mynginx nginx
Gestion des conteneurs : Docker propose des commandes pour gérer les conteneurs : start, stop, restart, rm et exec.
docker stop mynginx
docker rm mynginx
Tu apprendras toutes les commandes et leurs paramètres dans les prochaines conférences.
6.3 Registries (Registres)
Un registre Docker est un stockage pour les Docker images. Les registres permettent aux développeurs et aux organisations de stocker, gérer et distribuer des images de conteneurs. Il existe des registres publics et privés.
Caractéristiques principales des registres :
- Registres publics : comme Docker Hub, fournissent l'accès à de nombreuses images créées par la communauté et les développeurs officiels.
- Registres privés : utilisés pour stocker et gérer des images au sein d'une organisation, assurant le contrôle d'accès et la sécurité.
- Intégration avec CI/CD : les registres s'intègrent facilement aux systèmes d'intégration et de déploiement continus, automatisant ainsi le processus de création et de déploiement des images.
Exemples d'utilisation des registres :
1. Docker Hub : un registre public (et le plus populaire) d'images Docker. Il offre l'accès à de nombreuses images prêtes à l'emploi (et souvent vérifiées, comme le montrent les statistiques de téléchargement).
docker pull nginx
docker push myusername/myimage:tag
2. Registre privé : vous pouvez configurer et utiliser votre propre registre à l'aide de Docker Registry.
docker run -d -p 5000:5000 --name registry registry:2
docker tag myimage localhost:5000/myimage
docker push localhost:5000/myimage
Interaction des images, conteneurs et registres
Ces trois composants sont étroitement liés et forment la base du travail avec Docker :
- Création d'image : le développeur crée une image à l'aide d'un Dockerfile et la sauvegarde localement.
- Téléchargement de l'image vers un registre : l'image est téléchargée dans un registre (par exemple, Docker Hub ou un registre privé), où elle est stockée et devient accessible pour d'autres utilisateurs ou systèmes.
- Exécution d'un conteneur : un utilisateur télécharge l'image depuis le registre et lance un conteneur, qui isole l'application et assure son exécution.
6.4 Orchestration
Orchestration — c'est le processus de gestion de plusieurs containers dans un environnement distribué. Les outils d'orchestration aident à automatiser le déploiement, le scaling et la gestion des containers.
- Kubernetes: la plateforme d'orchestration de containers la plus populaire, permettant de gérer un cluster de containers sur différents nœuds.
- Docker Swarm: une plateforme d'orchestration intégrée dans Docker pour créer et gérer des clusters Docker.
- Fonctionnalités d'orchestration: scaling automatique, auto-régénération, gestion des réseaux et équilibrage de charge.
6.5 Réseaux (Networks)
Les réseaux dans Docker permettent aux conteneurs d'interagir entre eux et avec le monde extérieur. Docker fournit plusieurs types de réseaux pour différents scénarios d'utilisation.
- Bridge : le réseau par défaut créé par Docker. Les conteneurs dans un réseau en bridge peuvent interagir entre eux.
- Host : le conteneur utilise les interfaces réseau de la machine hôte, accédant directement à ces dernières.
- Overlay : utilisé pour créer des réseaux entre plusieurs démons Docker. Nécessaire pour l'orchestration.
- None : désactive toutes les interfaces réseau du conteneur. Utile pour des tâches isolées.
6.6 Volumes
Les Volumes — c'est un mécanisme pour le stockage persistant des données des conteneurs. Ils permettent de sauvegarder les données en dehors du conteneur pour éviter leur perte lors du redémarrage ou de la suppression du conteneur.
- Création d’un volume : les volumes sont créés avec la commande
docker volume create. - Montage d’un volume : les volumes sont attachés aux conteneurs avec l'option
-vlors du lancement. - Avantages : les volumes offrent un moyen pratique de stocker et de partager des données entre les conteneurs, tout en fournissant de meilleures performances par rapport aux répertoires montés (bind mounts).
Important ! Un volume — c'est un disque dur virtuel qu'on peut connecter à une machine virtuelle ou à un conteneur. Généralement, il est stocké sur le système d'exploitation hôte sous forme de fichier ordinaire.
GO TO FULL VERSION