Skip to content

Build failure with Docker Engine v29 using containerd image store #586

Description

@sasund

We're experiencing build failures after upgrading to Docker Engine v29 (https://www.docker.com/blog/docker-engine-version-29/) on both GitHub ARC runners and Docker Desktop. The breaking change is: "The Containerd image store is now the default for new installations."
Buildpacks fail to build images when using the new containerd image store on both platforms.

  • As of Docker Engine v29, the containerd image store becomes the default for image layer and content management for new installs.

  • Legacy graph drivers are still available, but are now deprecated. New installs can still opt out of Containerd image store if there is any issue.

Build Command
mvn spring-boot:build-image -Dspring-boot.build-image.cleanCache=true -Dmaven.test.skip=true -Ddependency-check.skip=true -Dspring-boot.build-image.pullPolicy=ALWAYS -Dspring-boot.build-image.verboseLogging=true

Error Message
[INFO] [creator] ERROR: failed to export: saving image: failed to fetch base layers: saving image with ID "sha256:3553c27d0e2262b61c191e34bc9488f9bf5bd5590865699dba8e5e09db8fc555" from the docker daemon: Error response from daemon: No such image: sha256:3553c27d0e2262b61c191e34bc9488f9bf5bd5590865699dba8e5e09db8fc555

Environment Details

Docker Engine v29 with containerd image store (FAILS):


Server Version: 29.2.0
Storage Driver: overlayfs
  driver-type: io.containerd.snapshotter.v1

Docker Engine v29 with legacy image store (WORKS):

Server Version: 29.2.0
Storage Driver: overlay2

Workaround
In Docker Desktop, disabling "Use containerd for pulling and storing images" in settings allows builds to complete successfully.
Or for Github Arc Runners set

"features": {
        "containerd-snapshotter": false
      },
      "storage-driver": "overlay2"

Impact
This issue blocks adoption of Docker Engine v29 for teams using Paketo Buildpacks, as the containerd image store is now the default for new installations. The workaround requires manually disabling the new feature, which defeats the purpose of the upgrade.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions