Docker Build Cloud driver - #4017
Open
crazy-max wants to merge 21 commits into
Open
Conversation
dvdksn
reviewed
Aug 18, 2026
Comment on lines
+150
to
+160
| Tagged builds without an explicit output, `--load`, and | ||
| `--output type=docker` may use cloud pull to load the result into the selected | ||
| Docker context. `default-load=false` does not disable cloud pull for tagged | ||
| cloud builds with no explicit output. Explicit Docker archive, stdout, or | ||
| directory destinations, such as `--output type=docker,dest=image.tar`, keep | ||
| using normal Docker output handling. | ||
|
|
||
| Cloud pull is only used for a single cloud-pullable output on a single node and | ||
| single platform. Multi-node builds, multi-platform loads, conflicting Docker | ||
| output contexts, and multiple distinct image output requests use the normal | ||
| Buildx output path. |
Contributor
There was a problem hiding this comment.
I think we can defer some of this detail to a different doc. I'm opening a companion PR in docker/docs where I tried to cover cloud pull in a dedicated section in the exporter docs. We could cross-reference to that section from here and keep this high-level. Something like:
Suggested change
| Tagged builds without an explicit output, `--load`, and | |
| `--output type=docker` may use cloud pull to load the result into the selected | |
| Docker context. `default-load=false` does not disable cloud pull for tagged | |
| cloud builds with no explicit output. Explicit Docker archive, stdout, or | |
| directory destinations, such as `--output type=docker,dest=image.tar`, keep | |
| using normal Docker output handling. | |
| Cloud pull is only used for a single cloud-pullable output on a single node and | |
| single platform. Multi-node builds, multi-platform loads, conflicting Docker | |
| output contexts, and multiple distinct image output requests use the normal | |
| Buildx output path. | |
| When you don't specify an output, an untagged result remains in the cloud build | |
| cache. If you use `--tag`, Buildx automatically loads the image when the build | |
| targets a single platform and runs on one cloud node. For details about loading | |
| behavior, Docker contexts, and other output configurations, see | |
| [Load results from Docker Build Cloud](https://docs.docker.com/build/exporters/#load-results-from-docker-build-cloud). |
Contributor
There was a problem hiding this comment.
The downstream docs PR is: docker/docs#25885
Here's the new section on cloud pull/loading results to the local store: https://deploy-preview-25885--docsdocker.netlify.app/build/exporters/#load-results-from-docker-build-cloud
(That might need some improvements still but it seems like a good place to cover it.)
crazy-max
marked this pull request as ready for review
August 18, 2026 12:33
crazy-max
force-pushed
the
cloud-driver
branch
2 times, most recently
from
August 18, 2026 13:56
45f94e1 to
873ac53
Compare
Add the cloud driver with multi-region data-plane selection, optional provenance files, explicit cross-platform pulls, and upstream BuildKit integration. Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> Signed-off-by: Justin Chadwell <me@jedevc.com> Signed-off-by: Nick Adcock <nick.adcock@docker.com> Signed-off-by: Nick Santos <nick.santos@docker.com> Signed-off-by: Sergio Garcez <sergio.garcez@docker.com> Signed-off-by: Silvin Lubecki <silvin.lubecki@docker.com>
Register cloud pull through BuildKit's session exporter so it runs while result refs are still retained. This avoids relying on post-solve metadata after the daemon may have garbage-collected blobs. Pin BuildKit to the OSS callback commit based on v0.31.0. Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> Co-authored-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Allow driver factories to derive default builder names from endpoints before an instance is stored. Move cloud normalization into its factory. Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Co-authored-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Co-authored-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
crazy-max
force-pushed
the
cloud-driver
branch
from
August 20, 2026 09:28
873ac53 to
f9be50c
Compare
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This upstreams the Docker Build Cloud
clouddriver into public Buildx so Build Cloud users can use the standard Buildx release path instead of a private client fork. The driver lets Buildx create builders from existing Build Cloud groups with--driver cloud <account>/<builder>orcloud://<account>/<builder>, resolves the managed BuildKit instances into Buildx nodes, authenticates with Docker credentials, and connects to the Build Cloud data plane while keeping the backend service implementation private.The series adds the small builder and driver extension points needed for this integration, wires cloud pull through the upstream BuildKit session exporter path, preserves normal Buildx output behavior when cloud pull cannot be used, and documents the Build Cloud-specific create and output semantics. The Buildx reference links to the existing Docker Docs for Docker Build Cloud setup, Building with Docker Build Cloud, and Docker Build Cloud CI usage.
Special thanks, in no particular order, to @fiam, @jedevc, @silvin-lubecki, @sgarcez, @nicks, and @stevvooe for the work that made Docker Build Cloud possible. I may be missing people here, but the intent is to acknowledge the broader team effort behind this work.