Docker 29 has changed its default image store for new installs

· systems web · Source ↗

TLDR

  • Docker Engine 29.0 defaults to the containerd image store on fresh installs; upgrades keep overlay2 until manually switched.

Key Takeaways

  • /var/lib/docker is no longer the sole data path; images and snapshots now live in /var/lib/containerd on new installs.
  • containerd stores both compressed and uncompressed layer formats, increasing disk usage compared to overlay2, which kept only uncompressed layers.
  • Shared base layers are de-duplicated at the uncompressed level but each image retains its own compressed copy, multiplying overhead with large image counts.
  • New capabilities unlocked: local multi-platform image builds, attestation/SBOM support via image indices, Wasm container support, and pluggable snapshotters (stargz, nydus, dragonfly).
  • Automatic migration from overlay2 is experimental and unrecommended; manual enable requires editing /etc/docker/daemon.json and restarting the daemon.

Hacker News Comment Review

  • The disk overhead is the dominant complaint: commenters note that dual-format storage bloats space and, per one benchmark, inflates local image export time from ~4 seconds to ~71 seconds for a 5.76 GB image.
  • The containerd image store is incompatible with userns-remap, and commenters flag that shipping a breaking change with no migration path and an experimental auto-switch tool signals poor release quality.
  • Consensus in the thread leans toward evaluating Podman as an alternative, citing Docker’s track record of prioritizing hosted services over core tooling reliability.

Notable Comments

  • @black3r: benchmarked exporting to image at 71.5s with containerd vs 4.3s without, on a 5.76 GB image, same build otherwise.
  • @kodama-lens: an open containerd issue (containerd/containerd#13307) is tracking the compressed-layer deduplication problem.

Original | Discuss on HN