Erreurs
❌ Erreur Docker/Proxmox "No space left on device (Docker)" — Causes et Solutions
🐳 Docker / Proxmox
Docker a rempli le disque — images, volumes et layers inutilisés à nettoyer
L'erreur
no space left on device dans Docker est particulièrement courante car Docker accumule silencieusement les images, les couches (layers), les volumes orphelins et les containers arrêtés. Un seul docker system prune récupère souvent plusieurs dizaines de GB.⚠️ Causes possibles
Images inutilisées accumulées
Chaque build Docker crée de nouvelles images — les anciennes restent sur le disque
Volumes orphelins
Des volumes créés par des containers supprimés restent sur le disque
Build cache volumineux
Le cache de build Docker peut occuper plusieurs GB
Logs des containers illimités
Les logs JSON des containers grossissent sans limite si non configurés
Layers dupliquées
Les couches intermédiaires des images s'accumulent lors des builds
Containers arrêtés non supprimés
Les containers en état 'Exited' occupent encore de l'espace
🔧 Solutions étape par étape
1
Diagnostic de l'espace Docker
# Vue globale de l'espace utilisé par Docker
docker system df
docker system df -v # Détaillé
# Voir la taille de /var/lib/docker
du -sh /var/lib/docker/
du -sh /var/lib/docker/*/
# Lister les images par taille
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -rh | head -20
# Lister les volumes
docker volume ls
docker volume ls -f dangling=true # Volumes orphelins
# Voir les containers arrêtés
docker ps -a --filter status=exited2
Nettoyage rapide — docker system prune
# Nettoyage standard (containers, réseaux, images inutilisées) docker system prune # Nettoyage complet avec volumes (⚠️ supprime les données !) docker system prune -a --volumes # Nettoyage avec confirmation automatique docker system prune -f docker system prune -a --volumes -f # Voir ce qui sera supprimé sans supprimer docker system prune --dry-run 2>/dev/null || echo "Simuler : docker system df -v pour voir les candidats" # Vérifier l'espace récupéré docker system df
3
Nettoyage ciblé par type
# 1. Supprimer les containers arrêtés docker container prune -f docker rm $(docker ps -aq -f status=exited) 2>/dev/null # 2. Supprimer les images inutilisées (dangling) docker image prune -f # Supprimer TOUTES les images non utilisées docker image prune -a -f # 3. Supprimer les volumes orphelins docker volume prune -f # 4. Supprimer les réseaux inutilisés docker network prune -f # 5. Nettoyer le cache de build docker builder prune -f docker builder prune -a -f # Tout le cache
4
Limiter la taille des logs Docker
# Option 1 : configurer globalement dans /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
# Appliquer
systemctl restart docker
# Option 2 : par container (docker run)
docker run --log-opt max-size=10m --log-opt max-file=3 monimage
# Option 3 : par service dans docker-compose.yml
services:
webapp:
image: nginx
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Voir la taille des logs d'un container
find /var/lib/docker/containers/ -name "*.log" -exec ls -lh {} \;5
Automatiser le nettoyage avec cron
# Nettoyage hebdomadaire automatique crontab -e # Ajouter : 0 2 * * 0 docker system prune -f --filter "until=168h" >> /var/log/docker-prune.log 2>&1 # Script de nettoyage avancé #!/bin/bash echo "=== Docker Cleanup $(date) ===" echo "Avant :" docker system df docker container prune -f --filter "until=24h" docker image prune -f --filter "until=168h" docker volume prune -f docker builder prune -f --keep-storage 5GB echo "Après :" docker system df # Déplacer /var/lib/docker vers un volume dédié # (si partition root trop petite) systemctl stop docker mv /var/lib/docker /data/docker ln -s /data/docker /var/lib/docker systemctl start docker
🛡️ Comment éviter cette erreur
- ✅ Configurer les limites de logs dans
/etc/docker/daemon.jsonavant toute utilisation en production - ✅ Planifier un
docker system prune -fhebdomadaire via cron - ✅ Dédier une partition ou un volume LVM à
/var/lib/dockerpour isoler l'espace Docker - ✅ Monitorer l'espace
/var/lib/dockeravec Zabbix et alerter à 80%
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google