The Docker Engine v29 release may not grab headlines with flashy new features, but it delivers transformative changes beneath the surface. For teams running Docker on Linux, this update strengthens the platform’s foundation, ensuring better performance, maintainability, and future alignment with the evolving container ecosystem.
Major Enhancements in Docker Engine v29
- API version requirement raised to 1.44
- Containerd image store now default
- Moby migrates to Go modules
- Experimental nftables support
What the Minimum API Version Bump Means
With v29, Docker Engine now requires clients to use API version 1.44 or newer, ending support for versions older than Docker v25. This move boosts security and consistency, but it could require upgrades for legacy clients. Temporary workarounds allow older clients via environment variables or daemon.json, but these should only be used as transitional steps.
Containerd Image Store: The New Standard
The most impactful architectural change is making containerd the default image store for new Docker Engine installations. Originally a core part of Docker, containerd is now a CNCF project and has become the container runtime standard powering Kubernetes and other platforms. Aligning Docker Engine with containerd brings several benefits:
- Enables advanced features like snapshotters and lazy image pulling
- Facilitates remote and peer-to-peer image distribution
- Improves interoperability with other containerd-based systems
Legacy storage drivers remain available for now, easing the transition for existing users. New installations will immediately benefit from the modern and modular architecture, while migration guides are in development for teams planning the switch. Full deprecation of the legacy backend is slated for a future release.
Moby Moves to Go Modules
Under the hood, Docker’s Moby project has shifted from a legacy vendoring system to modern Go modules. This streamlines dependency management, lowers maintenance overhead, and simplifies integration for contributors and developers using Docker’s Go APIs. For ongoing compatibility, developers must now import from github.com/moby/moby instead of the old Docker import path.
Experimental nftables Network Support
Docker Engine v29 introduces experimental nftables support for managing firewall rules. As many Linux distributions move away from iptables, nftables offers a more modern and efficient networking backend. Opt in by starting dockerd with --firewall-backend=nftables. While functionally equivalent to existing rules, this feature is not yet recommended for production or Swarm use—early adopter feedback is welcome to help shape its future development.
How to Upgrade to v29
If you use Docker Desktop, updates are automatic. Linux users running the Community Edition can follow the official Docker documentation for detailed upgrade instructions. The Docker team is providing migration resources and is committed to supporting users through these foundational changes.
Takeaway: Preparing for the Next Era of Containers
Rather than delivering immediate new features, Docker Engine v29 is all about investing in the platform’s future. By standardizing on containerd, modernizing its codebase with Go modules, and introducing nftables support, Docker is positioning itself for rapid innovation and seamless compatibility across the container ecosystem. Developers and organizations can expect a more robust, reliable, and adaptable platform for years to come.
Source: Docker Blog

Docker Engine v29: Laying the Groundwork for a Next-Generation Container Platform