The buildx client connects out to the BuildKit backend to execute builds - Buildx drivers allow fine-grained control over management of the backend, and supports several options for where and how BuildKit should run.
Currently, we support the following drivers:
dockerdriver, that uses the BuildKit library bundled into the Docker daemon. (guide, reference)
docker-containerdriver, that launches a dedicated BuildKit container using Docker, for access to advanced features. (guide, reference)
kubernetesdriver, that launches dedicated BuildKit pods in a remote Kubernetes cluster, for scalable builds. (guide, reference)
remotedriver, that allows directly connecting to a manually managed BuildKit daemon, for more custom setups. (guide, reference)
To create a new builder that uses one of the above drivers, you can use the
docker buildx create command:
$ docker buildx create --name=<builder-name> --driver=<driver> --driver-opt=<driver-options>
The build experience is very similar across drivers, however, there are some
features that are not evenly supported across the board, notably, the
driver does not include support for certain output/caching types.
|Cache export||❔ (inline only)||✅||✅||✅|
|Docker/OCI tarball output||❌||✅||✅||✅|
|BuildKit configuration||❌||✅||✅||❔ (managed externally)|