Repository navigation
Releases: maximilianfeix/dockdu
Release list
v0.5.0
Added
- Anonymous volumes are marked. Volumes that Docker created without a name are flagged
anonymousin the volume list and in JSON (volumes.items[].anonymous).- Docker creates them for an image
VOLUMEor for-v /path, anddocker rmwithout-vleaves them behind. - dockdu still prints one
docker volume rmhint per orphan and never a bulk command.
- Docker creates them for an image
Fixed
- Homebrew no longer warns on install.
brew installandbrew upgradeprinted "Callingpostflightis deprecated". The cask now removes the macOS quarantine flag withpostflight_steps.- Tested: no warning, and the quarantine flag is gone. Without the step, the flag is present.
Full list: CHANGELOG
brew upgrade dockdu # or: brew install maximilianfeix/tap/dockdu
go install github.com/maximilianfeix/dockdu/cmd/dockdu@v0.5.0
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v /var/lib/docker:/var/lib/docker:ro ghcr.io/maximilianfeix/dockdu:v0.5.0
v0.4.0
Two places where disk space hides from docker system df, both measured on disposable Engine 28.5 and 29.9 daemons (verification log).
Added
- buildx builders. A builder made with
docker buildx create --driver docker-containerkeeps its whole cache in the volumebuildx_buildkit_<node>_state.- In the test, df's build cache row said 0 B while the builder held 70 MiB.
docker builder prune -affreed nothing;docker buildx prune --builder=cifreed 71 MiB.- dockdu now lists these builders under BUILD CACHE, marks their volumes and prints the prune command for each builder.
--disk: overlay2 by owner. The directories underoverlay2/are split into image layers, container layers and directories with no record, using the graph driver's own layer records.- When the unrecorded part is at least 64 MiB and at least a tenth of overlay2, more than all private build cache could explain, dockdu reports it as likely leftovers and lists the largest directories.
- No Docker command lists such leftovers, and no prune removes them.
- Images hidden by the containerd image store. After a switch to the containerd image store, Docker hides the old overlay2 images but keeps them on disk.
- In the test:
docker system df0 B,docker system prune -affreed 0 B, 71.8 MiB on disk. - dockdu reports this even without
--disk.
- In the test:
Changed
- With
--disk, dockdu also reads the overlay2 layer ID files. Each holds only a short ID and is read throughos.Root. No new Docker API call; JSON only gains keys,schema_versionstays 1.
Full list: CHANGELOG
brew upgrade dockdu # or: brew install maximilianfeix/tap/dockdu
go install github.com/maximilianfeix/dockdu/cmd/dockdu@v0.4.0
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v /var/lib/docker:/var/lib/docker:ro ghcr.io/maximilianfeix/dockdu:v0.4.0
v0.3.3
Fixed
- Rootless Docker: the log rotation hint names
~/.config/docker/daemon.json, the file a rootless daemon reads, instead of/etc/docker/daemon.json. dockdu detects rootless mode fromdocker info(name=rootless) and reportsdaemon.rootlessin JSON. Tested end to end on a rootless Engine 29.9 daemon: dockdu follows the CLI context, finds~/.local/share/dockerand measures the logs without root.
Security
- Container log files are now listed through an
os.Rooton the data root. A container directory replaced by a symlink to somewhere outside the data root is no longer listed; that container is reported as unmeasured. Before, dockdu could report the sizes of files outside the data root, never their contents.
Full list: CHANGELOG
brew upgrade dockdu # or: brew install maximilianfeix/tap/dockdu
go install github.com/maximilianfeix/dockdu/cmd/dockdu@v0.3.3
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v /var/lib/docker:/var/lib/docker:ro ghcr.io/maximilianfeix/dockdu:v0.3.3
v0.3.2
dockdu shows the Docker disk usage that docker system df leaves out, without deleting anything. This release finishes the 0.3 line.
0.3.2
- Wrapped text never splits a size from its unit anymore. v0.3.1 printed "freed: 0", then "B" on the next line.
0.3.1
- 80-column output. The text report now reads on an 80-column terminal; on containerd hosts the summary line used to run to about 190 columns. Tables and suggested commands stay on one line, so the commands remain copyable.
- Least-privilege workflows. The release and CodeQL workflows grant write permissions per job.
- Dependency.
golang.org/x/sysv0.44.0 (GO-2026-5024, not reachable from dockdu).
0.3.0
-
Containerd image store: dockdu no longer claims that prune keeps build cache shared with images. Measured on disposable daemons with
docker builder prune -af:Engine / image store Shared build cache Freed on disk 28.5.2 / overlay2 64.0 MiB ≈ 0 29.9.0 / containerd 140.7 MiB 72.7 MiB -
Is the full disk Docker's at all? dockdu now prints the filesystem that holds the data root.
dockdu --diskmeasures the data root likedu -sx(within 0.1% on the test daemons) and shows how much of the same filesystem lies outside it.
Measurements: docs/verification/demo-2026-10-14.md · Full list: CHANGELOG
Install
brew install maximilianfeix/tap/dockdu # or: brew upgrade dockdu
go install github.com/maximilianfeix/dockdu/cmd/dockdu@v0.3.2
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v /var/lib/docker:/var/lib/docker:ro ghcr.io/maximilianfeix/dockdu:v0.3.2
Verify the archives with shasum -a 256 -c checksums.txt --ignore-missing.
v0.3.1
Changelog
- 1e81ca0: Merge pull request #31 from maximilianfeix/launch-ready (@maximilianfeix)
- 6832e3c: Merge pull request #32 from maximilianfeix/scorecard-fixes (@maximilianfeix)
- a48e64d: Merge pull request #33 from maximilianfeix/fix-text-width (@maximilianfeix)
- 7a30832: Merge pull request #34 from maximilianfeix/release-0.3.1 (@maximilianfeix)
- 14b4687: Merge remote-tracking branch 'origin/main' into launch-ready (@maximilianfeix)
- ddaeae6: Merge remote-tracking branch 'origin/main' into launch-ready (@maximilianfeix)
- 5d93020: ci: grant write permissions per job, not workflow-wide (Scorecard TokenPermissions) (@maximilianfeix)
- 29a6f63: fix: keep text output within 80 columns (@maximilianfeix)
v0.3.0
Changelog
- e827a6b: Merge pull request #26 from maximilianfeix/launch-kit (@maximilianfeix)
- 72683a2: Merge pull request #27 from maximilianfeix/diagnose-disk (@maximilianfeix)
- 05a9d11: Merge pull request #28 from maximilianfeix/docs-release-0.2.0 (@maximilianfeix)
- 2207839: Merge pull request #29 from maximilianfeix/fix-containerd-prune (@maximilianfeix)
- ce79197: Merge pull request #30 from maximilianfeix/release-0.3.0 (@maximilianfeix)
- d465313: Merge remote-tracking branch 'origin/main' into diagnose-disk (@maximilianfeix)
- e5411be: feat: show the data root's filesystem and measure the data root with --disk (@maximilianfeix)
- 5b0b51d: fix: do not promise that prune keeps shared build cache on the containerd image store (@maximilianfeix)
v0.2.0
Changelog
- 34ba36c: Merge pull request #15 from maximilianfeix/docs-release-0.1.0 (@maximilianfeix)
- 04403ae: Merge pull request #16 from maximilianfeix/fix-version-buildinfo (@maximilianfeix)
- 88ea155: Merge pull request #17 from maximilianfeix/ci-release-preflight (@maximilianfeix)
- e039009: Merge pull request #22 from maximilianfeix/v0.2-hardening (@maximilianfeix)
- ce226ea: Merge pull request #23 from maximilianfeix/ci-codeql-v4 (@maximilianfeix)
- d04b67f: Merge pull request #24 from maximilianfeix/community-templates (@maximilianfeix)
- d054f47: Merge pull request #25 from maximilianfeix/release-0.2.0 (@maximilianfeix)
- 7c6dfa9: ci: fail the release before publishing when the tap token cannot write (@maximilianfeix)
- 6cb53fe: ci: move every codeql-action step to v4.38.3 together and group the updates (@maximilianfeix)
- 7e88a16: feat: enforce the read-only contract in the client, inspect in parallel (@maximilianfeix)
- 6700903: feat: follow the docker CLI context when DOCKER_HOST is unset (@maximilianfeix)
- 4d102d4: feat: version the JSON contract and test it (@maximilianfeix)
- e8e1226: fix: create fixtures with O_EXCL instead of stat-then-write (@maximilianfeix)
- 0d8b9c6: fix: do not label the image reclaimable figure as df's (@maximilianfeix)
- 90cc558: fix: do not subtract shared build cache twice on Docker Engine 28 and older (@maximilianfeix)
- b5ca8e0: fix: mark image layer overlap and unknown volume sizes as partial (@maximilianfeix)
- 48f636e: fix: one warning instead of one per container when the data root is not visible (@maximilianfeix)
- 4aa7eee: fix: quote daemon-supplied names in suggested commands (@maximilianfeix)
- 564e510: fix: report the module version for go install builds (@maximilianfeix)
- 4839009: fix: review findings on the v0.2 branch (@maximilianfeix)
- 39bc9e9: test: expect -- before a volume name with a leading dash (@maximilianfeix)
- 0d3a7e3: test: fuzz build cache accounting invariants (@maximilianfeix)
v0.1.0
Changelog
- a52b85b: Merge pull request #10 from maximilianfeix/phase-4-logs (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 95bd3a8: Merge pull request #11 from maximilianfeix/phase-5-compose-volumes (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 6920d66: Merge pull request #12 from maximilianfeix/phase-6-render (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- cb97200: Merge pull request #13 from maximilianfeix/phase-7-release (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- ebf8794: Merge pull request #14 from maximilianfeix/docs-quickstart-exit2 (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 7ec5ee1: Merge pull request #9 from maximilianfeix/phase-3-buildcache-images (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- bc42a48: Phase 0: feasibility spike and spec amendments (#2) (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 6fa8273: Phase 1: project skeleton (#6) (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 8e18468: Phase 2: engine snapshot, report model and df totals (#8) (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 811e1ad: feat: build cache and image rules with suggestions (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 0caab61: feat: compose project grouping and volume reference states (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 5baa7e6: feat: container log footprint per container (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 05edab3: feat: release candidate: GoReleaser, container image, README and demo (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 2dcb7ce: fix: collector review findings (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 6b46113: fix: release review findings (Maxi 223365242+maximilianfeix@users.noreply.github.com)
- 02e161c: fix: render review findings (Maxi 223365242+maximilianfeix@users.noreply.github.com)