# Inicio rápido


Sigue esta guía para comenzar a crear una extensión de Docker básica. La guía de inicio rápido genera automáticamente archivos de plantilla por ti.

## Requisitos previos

- [Docker Desktop](/desktop/release-notes/)
- [NodeJS](https://nodejs.org/)
- [Go](https://go.dev/dl/)

> [!NOTE]
>
> NodeJS y Go solo son necesarios cuando sigues la guía de inicio rápido para crear una extensión. Esta utiliza el comando `docker extension init` para generar automáticamente archivos de plantilla. Este comando utiliza una plantilla basada en una aplicación ReactJS y Go.

En la configuración de Docker Desktop, asegúrate de poder instalar la extensión que estás desarrollando. Es posible que debas navegar a la pestaña **Extensions** en la configuración de Docker Desktop y desmarcar **Allow only extensions distributed through the Docker Marketplace**.

## Paso uno: Configurar tu directorio

Para configurar tu directorio, utiliza el subcomando `init` y proporciona un nombre para tu extensión.

```console
$ docker extension init <my-extension>
```

El comando realiza una serie de preguntas sobre tu extensión, como su nombre, una descripción y el nombre de tu repositorio de Hub. Esto ayuda a la CLI a generar un conjunto de archivos de plantilla para que puedas comenzar. Almacena los archivos de plantilla en el directorio `my-extension`.

La extensión generada automáticamente contiene:

- Un servicio de backend en Go en la carpeta `backend` que escucha en un socket. Tiene un endpoint `/hello` que devuelve un payload JSON.
- Un frontend en React en la carpeta `frontend` que puede llamar al backend y mostrar la respuesta del backend.

Para obtener más información y directrices sobre la construcción de la interfaz de usuario, consulta la [sección de Diseño y estilo de interfaz de usuario](/extensions/extensions-sdk/quickstart/design/design-guidelines/).

## Paso dos: Construir la extensión

Para construir la extensión, dirígete al directorio recién creado y ejecuta:

```console
$ docker build -t <name-of-your-extension> .
```

`docker build` construye la extensión y genera una imagen con el mismo nombre que el repositorio de Hub elegido. Por ejemplo, si escribiste `john/my-extension` como respuesta a la siguiente pregunta:

```console
? Hub repository (eg. namespace/repository on hub): john/my-extension`
```

El comando `docker build` genera una imagen con el nombre `john/my-extension`.

## Paso tres: Instalar y previsualizar la extensión

Para instalar la extensión en Docker Desktop, ejecuta:

```console
$ docker extension install <name-of-your-extension>
```

Para previsualizar la extensión en Docker Desktop, una vez completada la instalación, deberías ver un elemento **Quickstart** bajo el menú **Extensions**. Al seleccionar este elemento se abre el frontend de la extensión.

> [!TIP]
>
> Durante el desarrollo de la interfaz de usuario, es útil utilizar la recarga en caliente (hot reloading) para probar tus cambios sin tener que volver a construir toda la extensión. Consulta [Previsualizar mientras se desarrolla la interfaz de usuario](/extensions/extensions-sdk/quickstart/dev/test-debug/#hot-reloading-whilst-developing-the-ui) para obtener más información.

También es posible que quieras inspeccionar los contenedores que pertenecen a la extensión. Por defecto, los contenedores de la extensión están ocultos en el Panel de Docker (Docker Dashboard). Puedes cambiar esto en **Settings**; consulta [cómo mostrar los contenedores de la extensión](/extensions/extensions-sdk/quickstart/dev/test-debug/#show-the-extension-containers) para obtener más información.

## Paso cuatro: Enviar y publicar tu extensión en el Marketplace

Si quieres poner tu extensión a disposición de todos los usuarios de Docker Desktop, puedes enviarla para su publicación en el Marketplace. Para obtener más información, consulta [Publicar](/extensions/extensions-sdk/quickstart/extensions/).

## Limpieza

Para eliminar la extensión, ejecuta:

```console
$ docker extension rm <name-of-your-extension>
```

## Qué sigue

- Construye un [frontend más avanzado](/extensions/extensions-sdk/quickstart/build/frontend-extension-tutorial/) para tu extensión.
- Aprende cómo [probar y depurar](/extensions/extensions-sdk/quickstart/dev/test-debug/) tu extensión.
- Aprende cómo [configurar la integración continua (CI) para tu extensión](/extensions/extensions-sdk/quickstart/dev/continuous-integration/).
- Obtén más información sobre la [arquitectura](/extensions/extensions-sdk/quickstart/architecture/) de las extensiones.
- Obtén más información sobre el [diseño de la interfaz de usuario](/extensions/extensions-sdk/quickstart/design/design-guidelines/).

