OCI and Docker exporters

The oci exporter outputs the build result into an OCI image layout tarball. The docker exporter behaves the same way, except it exports a Docker image layout instead.

The docker driver doesn't support these exporters. You must use docker-container or some other driver if you want to generate these outputs.


Build a container image using the oci and docker exporters:

$ docker buildx build --output type=oci[,parameters] .
$ docker buildx build --output type=docker[,parameters] .

The following table describes the available parameters:

nameStringSpecify image name(s)
tartrue,falsetrueBundle the output into a tarball layout
compressionuncompressed,gzip,estargz,zstdgzipCompression type, see compression
compression-level0..22Compression level, see compression
force-compressiontrue,falsefalseForcefully apply compression, see compression
oci-mediatypestrue,falseUse OCI media types in exporter manifests. Defaults to true for type=oci, and false for type=docker. See OCI Media types
annotation.<key>StringAttach an annotation with the respective key and value to the built image,see annotations


These exporters support adding OCI annotation using annotation parameter, followed by the annotation name using dot notation. The following example sets the org.opencontainers.image.title annotation:

$ docker buildx build \
    --output "type=<type>,name=<registry>/<image>,annotation.org.opencontainers.image.title=<title>" .

For more information about annotations, see BuildKit documentation.

Further reading

For more information on the oci or docker exporters, see the BuildKit README.