Libérer de l'espace disque sur son serveur Docker
Disque plein ? Trouver ce qui prend la place, nettoyer les images Docker, les logs, le journal système et les vieilles sauvegardes, sans jamais toucher à vos données.
Un disque plein fait planter les bases de données, bloque les mises à jour et peut corrompre des fichiers (l’erreur « no space left on device »). Voici comment retrouver de la place, du plus sûr au plus délicat.
1. Où en est-on ?
df -h /
Au-dessus de 85 %, il est temps d’agir. Au-dessus de 95 %, c’est urgent.
2. Qu’est-ce qui prend la place ?
sudo du -xh --max-depth=2 / 2>/dev/null | sort -rh | head -15
sudo docker system df
Les suspects habituels :
| Dossier | Contenu | Voir |
|---|---|---|
/var/lib/docker |
images, conteneurs, logs Docker | étapes 3 et 4 |
/opt/backups |
sauvegardes locales | étape 6 |
/var/log, /var/log/journal |
journaux du système | étape 5 |
/opt/stacks/<application> |
vos données | étape 7 |
/srv |
vos médias | à vous de trier |
3. Les images Docker inutilisées (sans risque)
À chaque mise à jour, l’ancienne version de l’image reste sur le disque.
sudo docker image prune -a
Ne supprime que les images qu’aucun conteneur n’utilise. Vos applications et leurs données ne sont pas concernées. C’est souvent plusieurs Go de gagnés.
Le cache de construction (si vous construisez des images vous-même) :
sudo docker builder prune
4. Les logs des conteneurs
Un conteneur bavard peut écrire des Go de logs. Le script de Mon serveur limite déjà chaque conteneur à 3 fichiers de 10 Mo. Si vous avez installé Docker autrement, vérifiez :
sudo du -sh /var/lib/docker/containers/*/*-json.log | sort -rh | head
cat /etc/docker/daemon.json
Pour ajouter la limite (puis redémarrez Docker, qui l’appliquera aux conteneurs recréés) :
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }
Après un redémarrage de Docker, vérifiez que tous vos conteneurs sont repartis (pourquoi).
5. Le journal du système
journalctl --disk-usage
sudo journalctl --vacuum-size=200M
Pour que ça ne revienne pas, dans /etc/systemd/journald.conf : SystemMaxUse=200M, puis
sudo systemctl restart systemd-journald.
Les anciens paquets téléchargés :
sudo apt-get clean
sudo apt-get autoremove --purge
6. Les sauvegardes locales
du -sh /opt/backups
ls -lt /opt/backups | tail
La sauvegarde de Mon serveur supprime d’elle-même les archives plus
anciennes que le nombre de jours choisi. Si elles prennent trop de place, baissez ce nombre (ligne JOURS= du script)
après vous être assuré d’avoir une copie ailleurs.
7. Vos données (avec précaution)
Si ce sont les données des applications qui grossissent :
sudo du -sh /opt/stacks/* | sort -rh
- Immich, Nextcloud : les photos et fichiers. Videz la corbeille dans l’application ; Nextcloud garde aussi les
anciennes versions des fichiers (
occ versions:cleanup). - Bases de données : ne supprimez jamais de fichier à la main dans un dossier
dboupostgres.
Si les données grossissent normalement, la vraie solution est un disque plus grand : la plupart des hébergeurs permettent d’agrandir le disque, ou d’ajouter un volume de stockage.
Ne plus être surpris
Faites-vous prévenir avant d’arriver à 100 % : un watchdog, ou le petit script d’alerte disque du guide ntfy.
Une commande qui ne marche pas, une explication pas claire ? Signaler une erreur dans cette page.