DockerSpace
See what Docker takes up on disk, project by project — and delete only what is genuinely unused.
Docker quietly accumulates tens of gigabytes in images, volumes and build cache. DockerSpace groups it by project, shows you what is in use and what is not, and gives you per-project cleanup instead of all-or-nothing.
Docker will not tell you who owns what. You see 90 images and 40 volumes with no idea which belong to the project you are working on and which are left over from one you finished a year ago.
The alternative is prune, which draws no distinction — or deleting by hand, which requires remembering what created each thing.
What DockerSpace does
Groups containers, images, volumes and build cache by Compose project
Classifies every resource: active, shared, base image or orphaned
Per-project cleanup that keeps whatever other projects still use
Images in use are matched by their real identifier, not by name
Stopped containers count too, so their image is not deleted underneath them
The last scan is kept on disk — opening the app shows state immediately
Works with both Docker Desktop and Colima
How it works, step by step
Six steps, in the order they happen. Nothing is deleted before step 05.
Every resource is sorted before it gets deleted
Technical detail
$ docker system prune has two settings: delete nothing, or delete everything Docker thinks is unused — including things you needed.
DockerSpace scans your local state and groups it by the Compose project that created it. For every resource it tells you whether it is active, shared between projects, a base image, or orphaned — and only then offers to delete it.
Images in use are matched by their real identifier rather than by name, so an image used by a stopped container is not lost. Per-project cleanup removes that project's own containers, images and volumes while keeping what is shared.
The last scan is kept on disk, so opening the app shows you the previous state immediately instead of making you wait.
Why you can trust it
Four things you can check in the app's source, each with the file it was read from.
Matched by real identifier, not by name
An image counts as "in use" only if its real identifier shows up among existing containers — running or stopped. A stopped container's image will not disappear from under it.
Core/Classify.swift — classifyImage(), usedImageIDs.contains(img.id)
Five states per volume, not two
A volume can be in use, orphaned with a project label, an anonymous orphan, "disputed" (the app's own scan and Docker's filter disagree — held back from any cleanup until that's resolved), or "unknown" when the inspect was incomplete.
Core/Classify.swift — enum VolumeUsage
The bug that forced a fix has a test of its own
The suite covers label parsing, image and volume classification — and includes a test written for the base image that had been offered for deletion, so that particular mistake cannot come back.
Tests/ — regresie dedicată pentru fe905f6
Update checks are opt-in
The app ships with Sparkle for updates, but automatic checking is off by default — it only reaches the network when you click "Check for Updates".
App/Updater.swift + Info.plist, SUEnableAutomaticChecks = false
What it does not do yet
The old product page implied the items below too. In this build, none of them have a line of code.
None of these are part of the app as it stands today.
Requirements
Questions
No. The scan runs locally, through the Docker CLI on your machine. The only network call in the app is the manual update check, and it is off by default.
No. An image counts as "in use" if its real identifier shows up on a container — running or stopped. The container's or project's name plays no part.
It stays "unknown". The app never assumes a volume is orphaned just because it could not check — that is exactly what would turn a live database volume into a false orphan.
€24, one payment. The app does check a licence — the Ed25519 public key and the verifier are both in the binary you download from this page.
Both — the app reads straight from the `docker` CLI regardless of what is running behind it.
DockerSpace
+ VAT, calculated at checkout for your country
How to activate your licence
Open the app, go to Preferences → Licence and paste the key from the email.