# Drivers de compilación


Los drivers de compilación son configuraciones sobre cómo y dónde se ejecuta el backend de BuildKit. Los ajustes de los drivers son personalizables y permiten un control detallado del builder.

Buildx admite los siguientes drivers:

- `docker`: utiliza la biblioteca de BuildKit integrada en el demonio de Docker.
- `docker-container`: crea un contenedor BuildKit dedicado utilizando Docker.
- `kubernetes`: crea pods de BuildKit en un clúster de Kubernetes.
- `remote`: se conecta directamente a un demonio de BuildKit gestionado manualmente.

Diferentes drivers admiten distintos casos de uso. El driver predeterminado `docker` prioriza la simplicidad y la facilidad de uso. Tiene soporte limitado para características avanzadas como la exportación de caché y formatos de salida, y no es configurable. Otros drivers proporcionan más flexibilidad y son mejores para manejar escenarios avanzados.

La siguiente tabla resume algunas diferencias entre los drivers.

| Característica                    | `docker` | `docker-container` | `kubernetes` |        `remote`         |
| :-------------------------------- | :------: | :----------------: | :----------: | :---------------------: |
| **Cargar imagen automáticamente** |    ✅    |                    |              |                         |
| **Exportación de caché**          |   ✅\*   |         ✅         |      ✅      |           ✅            |
| **Salida en formato Tarball**     |          |         ✅         |      ✅      |           ✅            |
| **Imágenes multi-arquitectura**   |          |         ✅         |      ✅      |           ✅            |
| **Configuración de BuildKit**     |          |         ✅         |      ✅      | Gestionado externamente |

\* _El driver `docker` no admite todas las opciones de exportación de caché. Consulta [Backends de almacenamiento de caché](/build/cache/backends/) para obtener más información._

## Cargar en el almacenamiento de imágenes local

A diferencia de lo que ocurre al utilizar el driver `docker` predeterminado, las imágenes compiladas con otros drivers no se cargan automáticamente en el almacenamiento de imágenes local. Si no especificas una salida, el resultado de la compilación se exportará únicamente a la caché de compilación.

Para compilar una imagen utilizando un driver no predeterminado y cargarla en el almacenamiento de imágenes, utiliza la bandera `--load` con el comando de compilación:

```console
$ docker buildx build --load -t <image> --builder=container .
...
=> exporting to oci image format                                                                                                      7.7s
=> => exporting layers                                                                                                                4.9s
=> => exporting manifest sha256:4e4ca161fa338be2c303445411900ebbc5fc086153a0b846ac12996960b479d3                                      0.0s
=> => exporting config sha256:adf3eec768a14b6e183a1010cb96d91155a82fd722a1091440c88f3747f1f53f                                        0.0s
=> => sending tarball                                                                                                                 2.8s
=> importing to docker
```

Con esta opción, la imagen estará disponible en el almacenamiento de imágenes una vez que termine la compilación:

```console
$ docker image ls
REPOSITORY                       TAG               IMAGE ID       CREATED             SIZE
<image>                          latest            adf3eec768a1   2 minutes ago       197MB
```

### Cargar por defecto




Puedes configurar los drivers de compilación personalizados para que se comporten de manera similar al driver `docker` predeterminado y carguen las imágenes en el almacenamiento de imágenes de forma predeterminada. Para hacerlo, establece la opción del driver `default-load` al crear el builder:

```console
$ docker buildx create --driver-opt default-load=true
```

Ten en cuenta que, al igual que con el driver `docker`, si especificas un formato de salida diferente con `--output`, el resultado no se cargará en el almacenamiento de imágenes a menos que también especifiques explícitamente `--output type=docker` o utilices la bandera `--load`.

## Pasos siguientes

Lee la información de cada driver:

- [Driver Docker](/build/builders/docker/)
- [Driver Docker container](/build/builders/docker-container/)
- [Driver Kubernetes](/build/builders/kubernetes/)
- [Driver Remote](/build/builders/remote/)

