Guide du stockage pour développeurs

Docker prend de la place sur mon Mac

Docker Desktop garde tout dans un seul fichier. Il grossit à chaque compilation, et supprimer des images ne le rend pas plus petit. Voici pourquoi, et ce qui récupère vraiment la place.

Essai gratuit de 14 jours, sans carte. Ensuite 15 $ une fois pour 3 ordinateurs, macOS et Linux.

Treemap Bytesweep où l'image disque de Docker domine un dossier personnel Mac

Où est la place

Sur macOS, Docker Desktop fait tourner une machine virtuelle Linux, et tout le système de fichiers de cette VM est un unique fichier creux sur votre Mac :

~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

Vérifiez sa taille réelle sur le disque — pas sa taille logique, qui est toujours le maximum que vous avez autorisé à Docker :

du -h -d0 ~/Library/Containers/com.docker.docker/Data/vms/0/data/

Pourquoi supprimer des images ne le réduit pas

Supprimer une image libère des blocs à l'intérieur du système de fichiers de la VM, mais le fichier sur votre Mac garde sa taille : il a déjà pris cela à macOS. Les versions récentes de Docker Desktop émettent un TRIM depuis la VM, ce qui permet à macOS de récupérer les blocs libérés, mais cela arrive selon le calendrier de Docker et non à l'instant où vous faites le prune. D'ici là, docker system df annonce des gigaoctets libérés pendant que le Finder n'affiche aucun changement.

Récupérer la place

Dans l'ordre : du moins destructeur au plus.

1. Voir ce que Docker croit utiliser

Commencez toujours par là. Il sépare images, conteneurs, volumes et cache de compilation, et vous dit combien de chaque est récupérable.

docker system df -v

2. Vider le cache de compilation

Sur une machine qui construit des images régulièrement, c'est généralement le plus gros poste et le plus sûr à supprimer — cela ne fait que ralentir la compilation suivante.

docker builder prune -a

3. Nettoyer ce qui est vraiment inutilisé

Conteneurs arrêtés, images orphelines et réseaux inutilisés :

docker system prune

Ajoutez -a pour supprimer aussi chaque image non utilisée par un conteneur en cours — cela veut dire les retélécharger plus tard. N'ajoutez ce qui suit --volumes que si vous êtes certain : les volumes, c'est là que les bases de données gardent leurs données, et c'est la seule commande de cette page qui détruit quelque chose que vous ne pouvez pas retélécharger.

4. Listez les volumes avant d'y toucher

Regardez ce qui partirait vraiment :

docker volume ls
docker volume ls -f dangling=true

Docker est rarement le seul

Vous pouvez lancer chaque commande de cette page, et sur le même Mac DerivedData de Xcode et quelques poids de modèles oubliés sont généralement tout aussi gros. Bytesweep mesure la taille réelle de Docker sur le disque à côté de tout cela en un passage de dix secondes, pour que vous répariez le disque une fois au lieu de le poursuivre outil par outil.

5. Faire récupérer le fichier par macOS

Après le prune, Docker Desktop a une façon prévue de rendre les blocs libérés : Réglages → Ressources → Avancé → Utilisation du disque, ou quitter et rouvrir Docker Desktop, ce qui déclenche un TRIM au démarrage. Laissez-lui une minute et revérifiez la taille du fichier avant de décider que cela n'a pas marché.

6. Baisser la limite de disque

Dans Réglages → Ressources, la limite de disque virtuel est la taille que Docker.raw a le droit d'atteindre. La baisser ne libère rien en soi, mais plafonne le problème. L'avoir montée « au cas où » est la raison pour laquelle le fichier a atteint 64 Go.

7. Le dernier recours

Réglages → Dépannage → Clean / Purge data réinitialise complètement le disque de la VM et ramène le fichier à presque zéro. Cela supprime chaque image, conteneur et volume que vous avez. Utilisez-le quand rien d'autre n'a marché et que vous savez ce qu'il y a dans vos volumes.

Ne supprimez pas Docker.raw dans le Finder. Ce n'est pas un fichier de cache — ce sont les données de toute l'installation Docker, et le retirer pendant que Docker tourne peut laisser la VM dans un état qui exigera de toute façon une réinitialisation.

À vérifier aussi

Docker est rarement seul

Sur le Mac où Docker a atteint 50 Go, DerivedData de Xcode et les modèles d'IA locaux sont généralement juste derrière. Si vous récupérez de la place, il vaut la peine de mesurer tout le disque une fois plutôt que de réparer une chose à la fois. La liste complète →

Sous Linux, il n'y a pas de fichier image

Sous Linux, Docker écrit directement dans /var/lib/docker, donc un prune libère la place immédiatement et rien du problème de TRIM ci-dessus ne s'applique. Nettoyage disque Linux →

Voir Docker à côté de tout le reste

Bytesweep mesure la taille réelle de Docker sur le disque, l'affiche à côté de Xcode, des simulateurs, de node_modules et des poids de modèles, et signale ce qui peut partir sans risque — sans toucher à vos volumes.

Questions

Peut-on supprimer Docker.raw sans risque ?

Pas depuis le Finder, et pas pendant que Docker tourne. Ce seul fichier est chaque image, conteneur et volume que vous avez. Si vous voulez vraiment repartir de zéro, utilisez Dépannage → Clean / Purge data dans Docker Desktop, qui fait la même chose d'une façon dont Docker a connaissance.

Pourquoi docker system prune annonce-t-il 20 Go libérés alors que rien ne change ?

Parce qu'il a libéré 20 Go à l'intérieur du système de fichiers de la VM, pas sur votre Mac. Le fichier garde sa taille jusqu'à ce que le TRIM s'exécute et que macOS récupère les blocs. Quitter et rouvrir Docker Desktop le déclenche généralement.

docker system prune supprime-t-il mes bases de données ?

Seulement si vous ajoutez --volumes. Sans ce drapeau, il laisse les volumes tranquilles. Avec, tout volume non rattaché à un conteneur disparaît, et le volume d'une base de données arrêtée compte comme non rattaché.

Quelle taille devrait faire Docker.raw ?

Il n'y a pas de bonne réponse, mais sur une machine avec quelques projets actifs, 15 à 25 Go est normal et 60 Go veut dire que le cache de compilation n'a jamais été vidé. Vérifiez avec docker system df -v avant de supposer que ce sont les images.