# Compartir la aplicación


Ahora que has compilado una imagen, puedes compartirla. Para compartir imágenes de Docker, debes utilizar un registro de Docker. El registro predeterminado es Docker Hub, que es de donde provienen todas las imágenes que has utilizado hasta ahora.

> **Docker ID**
>
> Un Docker ID te permite acceder a Docker Hub, que es la biblioteca y comunidad de imágenes de contenedor más grande del mundo. Crea un [Docker ID](https://hub.docker.com/signup) de forma gratuita si no tienes uno.

## Crear un repositorio

Para subir (push) una imagen, primero debes crear un repositorio en Docker Hub.

1. [Regístrate](https://www.docker.com/pricing?ref=Docs&refAction=DocsSharingApp) o inicia sesión en [Docker Hub](https://hub.docker.com).

2. Selecciona el botón **Create Repository**.

3. Para el nombre del repositorio, utiliza `getting-started`. Asegúrate de que la **Visibility** (Visibilidad) sea **Public** (Pública).

4. Selecciona **Create**.

En la siguiente imagen, puedes ver un comando de Docker de ejemplo de Docker Hub. Este comando subirá la imagen a este repositorio.

![Comando de Docker con ejemplo de push](/get-started/workshop/04_sharing_app/images/push-command.webp)


## Subir la imagen

Intentemos subir la imagen a Docker Hub.

1. En la línea de comandos, ejecuta el siguiente comando:

   ```console
   docker push docker/getting-started
   ```

   Verás un error como este:

   ```console
   $ docker push docker/getting-started
   The push refers to repository [docker.io/docker/getting-started]
   An image does not exist locally with the tag: docker/getting-started
   ```

   Este fallo es de esperar porque la imagen aún no está etiquetada correctamente.
   Docker está buscando una imagen con el nombre `docker/getting-started`, pero tu
   imagen local todavía se llama `getting-started`.

   Puedes confirmar esto ejecutando:

   ```console
   docker image ls
   ```

2. Para solucionar esto, primero inicia sesión en Docker Hub utilizando tu Docker ID: `docker login YOUR-USER-NAME`.
3. Utiliza el comando `docker tag` para darle un nuevo nombre a la imagen `getting-started`. Reemplaza `YOUR-USER-NAME` con tu Docker ID.

   ```console
   $ docker tag getting-started YOUR-USER-NAME/getting-started
   ```

4. Ahora ejecuta el comando `docker push` de nuevo. Si estás copiando el valor de
   Docker Hub, puedes omitir la parte de `tagname`, ya que no añadiste una etiqueta al
   nombre de la imagen. Si no especificas una etiqueta, Docker utiliza la etiqueta llamada `latest`.

   ```console
   $ docker push YOUR-USER-NAME/getting-started
   ```

## Ejecutar la imagen en una nueva instancia

Ahora que tu imagen ha sido compilada y subida a un registro, puedes ejecutar tu aplicación en cualquier máquina que tenga Docker instalado. Intenta descargar y ejecutar tu imagen en otra computadora o en una instancia en la nube.

## Resumen

En esta sección, aprendiste cómo compartir tus imágenes subiéndolas a un registro. Luego, fuiste a una instancia completamente nueva y pudiste ejecutar la imagen recién subida. Esto es muy común en los canales de CI (integración continua), donde el canal crea la imagen y la sube a un registro, y luego el entorno de producción puede utilizar la versión más reciente de la imagen.

Información relacionada:

 - [Referencia de la CLI de Docker](/reference/cli/docker/)
 - [Imágenes multiplataforma](/build/building/multi-platform/)
 - [Descripción general de Docker Hub](/docker-hub/)

## Siguientes pasos

En la siguiente sección, aprenderás cómo persistir datos en tu aplicación contenedorizada.

[Persistir la base de datos](/get-started/workshop/04_sharing_app/05_persisting_data/)



