Introduction
Ce tutoriel Docker complet fournit aux développeurs et aux professionnels de l'informatique des connaissances essentielles sur la technologie des conteneurs. Apprenez à configurer Docker sur Ubuntu, comprenez les concepts fondamentaux et tirez parti de la conteneurisation pour un déploiement d'applications cohérent sur différents environnements informatiques.
Docker : Les Fondamentaux
Introduction à la Technologie Docker
Docker est une plateforme puissante pour la technologie des conteneurs qui révolutionne le déploiement et la virtualisation des logiciels. En tant qu'outil open-source, Docker permet aux développeurs d'emballer, de distribuer et d'exécuter des applications de manière cohérente sur différents environnements informatiques.
Concepts Fondamentaux de Docker
Qu'est-ce que Docker ?
Docker est une technologie de virtualisation légère qui permet aux développeurs de créer, déployer et exécuter des applications à l'aide de conteneurs. Contrairement aux machines virtuelles traditionnelles, les conteneurs partagent le noyau du système hôte, ce qui les rend plus efficaces et plus rapides à démarrer.
Architecture des Conteneurs
graph TD
A[Moteur Docker] --> B[Runtime des Conteneurs]
A --> C[Images Docker]
B --> D[Conteneur d'Application]
C --> D
Composants Clés de Docker
| Composant | Description | Rôle |
|---|---|---|
| Moteur Docker | Environnement d'exécution | Gère le cycle de vie des conteneurs |
| Image Docker | Modèle en lecture seule | Définit la configuration du conteneur |
| Conteneur Docker | Instance exécutable | Exécute l'application |
Installation sous Ubuntu 22.04
## Mettre à jour l'index des paquets
sudo apt update
## Installer les dépendances
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Ajouter la clé GPG officielle de Docker
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Configurer le dépôt stable
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Installer le moteur Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Commandes Docker de Base
## Vérifier la version de Docker
docker --version
## Vérifier l'installation de Docker
docker run hello-world
## Lister les conteneurs en cours d'exécution
docker ps
## Lister tous les conteneurs
docker ps -a
Avantages de Docker
Docker offre des avantages significatifs pour le développement logiciel moderne :
- Environnement cohérent entre le développement et la production
- Déploiement d'applications plus rapide
- Amélioration de l'utilisation des ressources
- Gestion simplifiée des dépendances
- Scalabilité et portabilité améliorées
Création d'Images Docker
Comprendre les Images Docker
Les images Docker sont des modèles en lecture seule utilisés pour créer des conteneurs. Elles contiennent le code de l'application, le runtime, les bibliothèques, les variables d'environnement et les fichiers de configuration nécessaires à l'exécution d'une application.
Notions de base sur les Dockerfile
Un Dockerfile est un document texte contenant les instructions pour la création d'une image Docker. Chaque instruction crée une nouvelle couche dans l'image.
Structure d'un Dockerfile
graph TD
A[Image de Base] --> B[Installer les Dépendances]
B --> C[Copier le Code de l'Application]
C --> D[Définir les Variables d'Environnement]
D --> E[Définir la Commande de Démarrage]
Instructions Dockerfile courantes
| Instruction | Rôle | Exemple |
|---|---|---|
| FROM | Spécifier l'image de base | FROM ubuntu:22.04 |
| RUN | Exécuter des commandes | RUN apt-get update |
| COPY | Copier des fichiers | COPY ./app /application |
| WORKDIR | Définir le répertoire de travail | WORKDIR /application |
| CMD | Définir la commande par défaut | CMD ["python", "app.py"] |
Création d'une image simple d'application web Python
Dockerfile d'exemple
## Utiliser l'image runtime Python officielle comme image de base
FROM python:3.9-slim
## Définir le répertoire de travail
WORKDIR /app
## Copier le fichier requirements
COPY requirements.txt .
## Installer les dépendances
RUN pip install --no-cache-dir -r requirements.txt
## Copier le code de l'application
COPY . .
## Exposer le port
EXPOSE 5000
## Définir la commande de démarrage
CMD ["python", "app.py"]
Construction d'une image Docker
## Construire l'image avec une étiquette
docker build -t hello-world-app .
## Lister les images locales
docker images
## Exécuter l'image créée
docker run -p 5000:5000 hello-world-app
Commandes de gestion des images
## Supprimer une image spécifique
docker rmi hello-world-app
## Supprimer toutes les images non utilisées
docker image prune
## Télécharger une image depuis Docker Hub
docker pull ubuntu:22.04
Bonnes pratiques
- Utiliser des images de base minimales
- Minimiser le nombre de couches
- Éviter d'installer des paquets inutiles
- Utiliser des builds multi-étapes pour des images plus petites
- Optimiser l'utilisation du cache de build efficacement
Gestion des Conteneurs
Vue d'ensemble du Cycle de Vie des Conteneurs
Les conteneurs Docker ont un cycle de vie défini avec plusieurs états, de la création à la terminaison. Comprendre ces états est crucial pour une gestion efficace des conteneurs.
stateDiagram-v2
[*] --> Created
Created --> Running
Running --> Paused
Paused --> Running
Running --> Stopped
Stopped --> Removed
Removed --> [*]
Opérations de Base sur les Conteneurs
Commandes de Gestion des Conteneurs
| Commande | Fonction | Exemple |
|---|---|---|
| docker create | Créer un conteneur | docker create nginx |
| docker start | Démarrer un conteneur | docker start container_id |
| docker stop | Arrêter un conteneur en cours d'exécution | docker stop container_id |
| docker restart | Redémarrer un conteneur | docker restart container_id |
| docker rm | Supprimer un conteneur | docker rm container_id |
Exécution de Conteneurs
## Exécuter le conteneur en premier plan
docker run nginx
## Exécuter le conteneur en arrière-plan
docker run -d nginx
## Exécuter le conteneur avec mappage de port
docker run -p 8080:80 nginx
## Exécuter le conteneur avec un nom personnalisé
docker run --name web-server nginx
Inspection et Surveillance des Conteneurs
## Lister les conteneurs en cours d'exécution
docker ps
## Lister tous les conteneurs
docker ps -a
## Afficher les journaux du conteneur
docker logs container_id
## Inspecter les détails du conteneur
docker inspect container_id
## Surveiller l'utilisation des ressources du conteneur
docker stats
Réseaux de Conteneurs
## Lister les réseaux Docker
docker network ls
## Créer un réseau personnalisé
docker network create mynetwork
## Connecter un conteneur au réseau
docker network connect mynetwork container_id
Gestion Avancée des Conteneurs
Limites des Ressources des Conteneurs
## Limiter le CPU et la mémoire
docker run -d \
--cpus="1.5" \
--memory="512m" \
nginx
Mise à l'échelle des Conteneurs
## Créer plusieurs instances de conteneurs
docker run -d -p 8001:80 nginx
docker run -d -p 8002:80 nginx
docker run -d -p 8003:80 nginx
Stratégies de Déploiement de Conteneurs
Gestion des Données Persistantes
## Créer un volume
docker volume create myvolume
## Monter le volume dans le conteneur
docker run -v myvolume:/app/data nginx
Configuration de l'Environnement
## Définir des variables d'environnement
docker run -e DATABASE_URL=localhost nginx
Résumé
Docker révolutionne le développement logiciel en permettant la création de conteneurs légers et portables qui simplifient le déploiement des applications. En maîtrisant les composants fondamentaux de Docker, le processus d'installation et les commandes de base, les développeurs peuvent créer des environnements logiciels plus efficaces, évolutifs et reproductibles avec un minimum de surcharge et un maximum de flexibilité.



