# Purge

Cette procédure permet de supprimer l'intégralité des données de Docker (conteneurs, images, volumes, réseaux et cache) pour retrouver un environnement "vierge", tout en conservant l'installation de Docker Engine.

---

## 1. Arrêt et suppression des conteneurs

La première étape consiste à stopper tous les processus en cours pour libérer les ressources.

- **Arrêter tous les conteneurs :**  
      
    ```
    docker stop $(docker ps -aq)
    ```
- **Supprimer tous les conteneurs :**  
      
    ```
    docker rm $(docker ps -aq)
    ```

---

## 2. Suppression des images

Pour libérer l'espace disque occupé par les systèmes de fichiers superposés.

- **Supprimer toutes les images (utilisées ou non) :**  
      
    ```
    docker rmi -f $(docker images -aq)
    ```

---

## 3. Suppression des volumes et réseaux

Les volumes contiennent vos données persistantes et les réseaux vos configurations de ponts personnalisées.

- **Supprimer tous les volumes :**  
      
    ```
    docker volume rm $(docker volume ls -q)
    ```
- **Supprimer les réseaux personnalisés :**<span style="white-space: pre-wrap;"> </span>**(Note : Les réseaux par défaut comme 'bridge', 'host' et 'none' ne seront pas supprimés)**  
      
    ```
    docker network rm $(docker network ls -q)
    ```

---

## 4. Nettoyage du cache de construction (Build Kit)

<span style="white-space: pre-wrap;">Docker conserve des traces des étapes de construction pour accélérer les futurs </span>`<span class="editor-theme-code">docker build</span>`. Pour une purge totale, il faut les vider.

- **Supprimer le cache de build :**  
      
    ```
    docker builder prune -a -f
    ```

---

## 5. La commande "All-in-One" (Le Grand Ménage)

Si vous souhaitez exécuter l'intégralité de ces étapes en une seule ligne de commande sécurisée (elle vérifie d'abord s'il y a des éléments à supprimer pour éviter les erreurs de syntaxe), utilisez celle-ci :

```
docker stop $(docker ps -aq) 2>/dev/null; docker system prune -a --volumes -f
```

### Détail de la commande All-in-One :

- `<span class="editor-theme-code">docker stop ...</span>`<span style="white-space: pre-wrap;"> : Arrête proprement tous les conteneurs.</span>
- `<span class="editor-theme-code">2>/dev/null</span>`<span style="white-space: pre-wrap;"> : Masque les erreurs si aucun conteneur n'est en cours.</span>
- `<span class="editor-theme-code">docker system prune</span>`<span style="white-space: pre-wrap;"> : La commande native de Docker pour le nettoyage.</span>
- `<span class="editor-theme-code">-a</span>`<span style="white-space: pre-wrap;"> : Supprime toutes les images inutilisées, pas seulement les "dangling" (sans nom).</span>
- `<span class="editor-theme-code">--volumes</span>`<span style="white-space: pre-wrap;"> : Force la suppression des volumes (non inclus par défaut dans le prune).</span>
- `<span class="editor-theme-code">-f</span>`<span style="white-space: pre-wrap;"> : Force l'exécution sans demander de confirmation (mode automatique).</span>

---

> **Attention :**<span style="white-space: pre-wrap;"> Cette opération est irréversible. Toutes les données contenues dans les bases de données (volumes) et les configurations spécifiques seront perdues.</span>