Open
Description
Problem Description
The recent introduction of the containerd
layer store in Depot-hosted runners exposed gaps in our understanding and configuration of Docker’s build process. The feature is working as designed, but it conflicts with our existing workflow when handling multi-architecture builds and provenance data.
Specifically:
- Single-architecture images inadvertently include manifest lists with an unexpected "unknown" platform due to Docker's default build provenance metadata.
- The legacy Docker layer store previously stripped this metadata, but the
containerd
store natively supports manifest lists and does not modify the image format. - Modifying our scripts is necessary to fully support the
containerd
layer store while retaining provenance data and enabling multi-architecture builds.
Desired Solution
-
Update
build_docker.sh
to Usedocker buildx
:- Incorporate
docker buildx build
to handle multi-platform builds efficiently. - Ensure proper handling of provenance metadata and manifest merging when creating multi-arch images.
- Incorporate
-
Integrate
depot build
as an Optional Workflow:- Add a flag to toggle between
docker buildx
anddepot build
for CI environments. - Use
depot build
for efficient multi-arch builds where possible, falling back todocker buildx
for broader compatibility.
- Add a flag to toggle between
-
Enhance CI Workflow:
- Default to
docker buildx
for local and dev workflows to avoid additional dependencies. - Enable
depot build
only in CI and set it up dynamically using a GitHub Action.
- Default to
-
Optimize for Single-Arch Builds:
- Modify the script to build single-architecture images efficiently (e.g., during dogfood development) while keeping multi-arch workflows intact in CI.
Next Steps
- Update
scripts/build_docker.sh
to support bothdocker buildx
for local dev anddepot build
for ci. - Test single-architecture and multi-architecture builds using both approaches to ensure functionality with the
containerd
layer store.
References
- Docker Buildx Documentation
- Docker Provenance Metadata
containerd
image store- Multi-platform builds
- Slack Thread
This issue will help us fully leverage the containerd
layer store's benefits while maintaining compatibility and development flexibility.