Introduction
Ce tutoriel fournit un guide complet sur l'utilisation de Docker Compose, en se concentrant sur la résolution de l'erreur "docker: 'compose' n'est pas une commande docker". Vous apprendrez à installer et configurer Docker Compose, à construire et gérer vos applications multi-conteneurs, et à explorer les meilleures pratiques pour une utilisation efficace de Docker Compose.
Notions de base Docker
Introduction à la conteneurisation Docker
Docker est une technologie de conteneurisation puissante qui révolutionne le déploiement et le développement d'applications. La technologie de conteneurisation permet aux développeurs d'emballer les applications avec toutes leurs dépendances, garantissant des performances constantes sur différents environnements informatiques.
Concepts fondamentaux de Docker
Qu'est-ce que Docker ?
Docker est une plateforme open-source de conteneurisation qui permet aux développeurs d'automatiser le déploiement, le dimensionnement et la gestion des applications. Il fournit une alternative légère aux machines virtuelles traditionnelles en créant des environnements isolés appelés conteneurs.
Composants clés de Docker
| Composant | Description |
|---|---|
| Docker Engine | Environnement d'exécution principal pour créer et exécuter des conteneurs |
| Image Docker | Modèle en lecture seule contenant le code de l'application et ses dépendances |
| Conteneur Docker | Instance exécutable d'une image Docker |
| Dockerfile | Fichier texte définissant les instructions de construction du conteneur |
Architecture Docker
graph TD
A[Client Docker] --> B[Daemon Docker]
B --> C[Runtime du conteneur]
B --> D[Registre d'images]
D --> E[Docker Hub]
Commandes et exemples de base Docker
Installation de Docker sur Ubuntu 22.04
## Mettre à jour les paquets système
sudo apt update
## Installer les dépendances Docker
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 Docker
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
Opérations Docker de base
## Extraire une image de Docker Hub
## Lister les images disponibles
## Exécuter un conteneur
## Lister les conteneurs en cours d'exécution
## Arrêter un conteneur
Avantages de la technologie de conteneurisation
La conteneurisation Docker offre plusieurs avantages :
- Environnements applicatifs cohérents
- Déploiement et mise à l'échelle plus rapides
- Consommation de ressources réduite
- Flux de travail de développement amélioré
- Indépendance de la plateforme
Cas d'utilisation des conteneurs Docker
Docker est largement utilisé dans :
- L'architecture microservices
- L'intégration continue/déploiement continu (CI/CD)
- Le développement d'applications cloud natives
- Les environnements de développement et de test
Flux de travail Docker Compose
Comprendre Docker Compose
Docker Compose est un outil pour définir et exécuter des applications Docker multi-conteneurs. Il permet aux développeurs d'utiliser un fichier YAML pour configurer les services, les réseaux et les volumes d'application, simplifiant ainsi la gestion d'environnements conteneurisés complexes.
Architecture Docker Compose
graph TD
A[Docker Compose] --> B[docker-compose.yml]
B --> C[Service 1]
B --> D[Service 2]
B --> E[Service 3]
C --> F[Réseau]
D --> F
E --> F
Configuration Docker Compose
Structure du fichier YAML
| Clé | Description |
|---|---|
| version | Version du format du fichier Compose |
| services | Définit les conteneurs individuels |
| networks | Configure la mise en réseau des conteneurs |
| volumes | Gère le stockage de données persistant |
Exemple pratique : Déploiement d'une application Web
docker-compose.yml d'exemple
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./website:/usr/share/nginx/html
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: secretpassword
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Commandes Docker Compose
## Installer Docker Compose sur Ubuntu 22.04
sudo apt update
sudo apt install docker-compose
## Valider le fichier compose
docker-compose config
## Démarrer l'application multi-conteneurs
docker-compose up -d
## Afficher les conteneurs en cours d'exécution
docker-compose ps
## Arrêter et supprimer les conteneurs
docker-compose down
Techniques d'orchestration de services
Docker Compose permet une orchestration avancée des services :
- Définition des dépendances entre conteneurs
- Gestion des variables d'environnement
- Configuration des connexions réseau
- Contrôle de l'ordre de démarrage des conteneurs
Scalabilité et flexibilité
Les applications multi-conteneurs bénéficient de :
- Une architecture modulaire
- Une mise à l'échelle horizontale facile
- Une gestion simplifiée de la configuration
- Des environnements de développement cohérents
Techniques Docker Avancées
Configuration du réseau Docker
Types de réseaux
| Mode réseau | Description |
|---|---|
| Bridge | Mode réseau par défaut |
| Host | Utiliser directement le réseau hôte |
| Overlay | Communication multi-hôtes |
| Macvlan | Attribuer une adresse MAC |
graph TD
A[Réseau Docker] --> B[Réseau Bridge]
A --> C[Réseau Hôte]
A --> D[Réseau Overlay]
A --> E[Réseau Macvlan]
Création de réseaux personnalisés
## Créer un réseau bridge personnalisé
docker network create --driver bridge custom_network
## Lister les réseaux
docker network ls
## Inspecter les détails du réseau
docker network inspect custom_network
Gestion des ressources des conteneurs
Contraintes de ressources
services:
webapp:
image: nginx
deploy:
resources:
limits:
cpus: "0.50"
memory: 512M
reservations:
cpus: "0.25"
memory: 256M
Gestion des volumes Docker
## Créer un volume nommé
docker volume create app_data
## Monter le volume dans le conteneur
docker run -v app_data:/app/data nginx
## Lister les volumes
docker volume ls
## Supprimer les volumes inutilisés
docker volume prune
Optimisation de Dockerfile
## Exemple de build multi-étapes
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin
ENTRYPOINT ["myapp"]
Dépannage avancé
## Inspection des logs du conteneur
## Surveillance des ressources en temps réel
## Détails du processus du conteneur
Améliorations de sécurité
Options de sécurité d'exécution
## Exécuter le conteneur avec un système de fichiers en lecture seule
docker run --read-only nginx
## Limiter les capacités du conteneur
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
Surveillance des performances
## Informations Docker système
docker system info
## Analyse de l'utilisation du disque
docker system df
## Supprimer les ressources inutilisées
docker system prune -a
Résumé
À la fin de ce tutoriel, vous aurez une compréhension approfondie de Docker Compose et de la manière de résoudre l'erreur "docker: 'compose' n'est pas une commande docker". Vous serez capable de configurer, gérer et mettre à l'échelle vos applications Docker Compose en toute confiance, en suivant les meilleures pratiques de l'industrie pour une performance et une maintenabilité optimales.



