# Documentation : Commandes Docker et Docker Compose
Cette documentation liste les commandes Docker et Docker Compose les plus utiles
pour gérer vos conteneurs, images, volumes, et réseaux.
---
## **1. Commandes Docker**
### **Images**
- **Lister les images disponibles localement :**
```bash
docker images
```
- **Télécharger une image depuis Docker Hub :**
```bash
docker pull <image>:<tag>
```
Exemple :
```bash
docker pull nginx:latest
```
- **Supprimer une image :**
```bash
docker rmi <image_id>
```
- **Créer une image personnalisée depuis un `Dockerfile` :**
```bash
docker build -t <nom_image>:<tag> <chemin_vers_Dockerfile>
```
### **Conteneurs**
- **Lister les conteneurs actifs :**
```bash
docker ps
```
- **Lister tous les conteneurs (même ceux arrêtés) :**
```bash
docker ps -a
```
- **Démarrer un conteneur :**
```bash
docker start <container_id>
```
- **Arrêter un conteneur :**
```bash
docker stop <container_id>
```
- **Supprimer un conteneur :**
```bash
docker rm <container_id>
```
- **Créer et exécuter un conteneur :**
```bash
docker run -d -p <port_local>:<port_conteneur> --name <nom_conteneur> <image>
```
Exemple :
```bash
docker run -d -p 8080:80 --name mon_nginx nginx:latest
```
- **Voir les logs d'un conteneur :**
```bash
docker logs <container_id>
```
- **Entrer dans un conteneur en cours d'exécution :**
```bash
docker exec -it <container_id> /bin/bash
```
### **Volumes**
- **Lister les volumes :**
```bash
docker volume ls
```
- **Créer un volume :**
```bash
docker volume create <nom_volume>
```
- **Supprimer un volume :**
```bash
docker volume rm <nom_volume>
```
- **Utiliser un volume dans un conteneur :**
```bash
docker run -d -v <nom_volume>:<chemin_dans_conteneur> <image>
```
### **Réseaux**
- **Lister les réseaux Docker :**
```bash
docker network ls
```
- **Créer un réseau :**
```bash
docker network create <nom_reseau>
```
- **Supprimer un réseau :**
```bash
docker network rm <nom_reseau>
```
- **Connecter un conteneur à un réseau :**
```bash
docker network connect <nom_reseau> <container_id>
```
---
## **2. Commandes Docker Compose**
### **Gestion des Conteneurs**
- **Démarrer une application avec Docker Compose :**
```bash
docker compose up
```
- **Démarrer une application en arrière-plan :**
```bash
docker compose up -d
```
- **Arrêter l'application :**
```bash
docker compose down
```
- **Redémarrer les conteneurs :**
```bash
docker compose restart
```
- **Voir les logs des conteneurs :**
```bash
docker compose logs
```
Ou en temps réel :
```bash
docker compose logs -f
```
- **Mettre à jour les services après une modification :**
```bash
docker compose up -d
```
### **Options Avancées**
- **Spécifier un fichier Compose personnalisé :**
```bash
docker compose -f <fichier>.yaml up
```
- **Spécifier un nom de projet :**
```bash
docker compose -p <nom_projet> up
```
- **Arrêter les conteneurs sans supprimer les volumes :**
```bash
docker compose down --volumes
```
- **Vérifier les conteneurs et services en cours :**
```bash
docker compose ps
```
- **Lister les configurations du fichier Compose :**
```bash
docker compose config
```
---
## **3. Commandes Utilitaires**
### **Nettoyage**
- **Supprimer tous les conteneurs arrêtés :**
```bash
docker container prune
```
- **Supprimer toutes les images inutilisées :**
```bash
docker image prune
```
- **Supprimer les volumes inutilisés :**
```bash
docker volume prune
```
- **Supprimer tout (conteneurs, images, volumes, réseaux) :**
```bash
docker system prune -a
```
---
## **4. Gestion des Données Persistantes**
- **Sauvegarder un volume :**
```bash
docker run --rm -v <nom_volume>:/source -v $(pwd):/backup busybox tar czf
/backup/<nom_archive>.[Link] -C /source .
```
- **Restaurer un volume :**
```bash
docker run --rm -v <nom_volume>:/destination -v $(pwd):/backup busybox tar xzf
/backup/<nom_archive>.[Link] -C /destination
```
---
## **5. Commandes de Débogage**
- **Inspecter un conteneur (informations détaillées) :**
```bash
docker inspect <container_id>
```
- **Inspecter un volume :**
```bash
docker volume inspect <nom_volume>
```
- **Inspecter un réseau :**
```bash
docker network inspect <nom_reseau>
```
- **Vérifier l'espace utilisé par Docker :**
```bash
docker system df