# Docker Hub pull usage and limits


Los usuarios no autenticados y los usuarios de Docker Personal están sujetos a un límite de tasa de descarga (pull) de 6 horas en Docker Hub. En contraste, los usuarios de Docker Pro, Team y Business se benefician de una tasa de descargas ilimitada.

El uso y los límites de descargas que se detallan a continuación se aplican en función de tu suscripción, sujetos a un uso razonable:

| Tipo de usuario           | Límite de tasa de descargas (pulls) cada 6 horas |
| ------------------------- | --------------------------------------- |
| Business (autenticado)   | Ilimitado                               |
| Team (autenticado)     | Ilimitado                               |
| Pro (autenticado)      | Ilimitado                               |
| Personal (autenticado) | 200                                     |
| Usuarios no autenticados  | 100 por dirección IPv4 o subred IPv6 /64 |

## Definición de descarga (pull)

Una descarga se define de la siguiente manera:

- Una descarga de Docker incluye tanto una comprobación de versión (version check) como cualquier descarga que ocurra como resultado de la misma. Según el cliente, un `docker pull` puede verificar la existencia de una imagen o etiqueta sin descargarla al realizar una comprobación de versión.
- Las comprobaciones de versión no cuentan para la facturación de uso.
- Una descarga para una imagen normal realiza una descarga para un [manifiesto único](https://github.com/opencontainers/image-spec/blob/main/manifest.md).
- Una descarga para una imagen multi-arquitectura contará como una descarga para cada arquitectura diferente.

## Atribución de descargas

Las descargas de usuarios autenticados se pueden atribuir a un espacio de nombres personal o de [organización](/accounts/general-faqs/#whats-an-organization-name-or-namespace).

La atribución se basa en lo siguiente:

- Descargas privadas: Las descargas para repositorios privados se atribuyen al propietario del espacio de nombres del repositorio.
- Descargas públicas: Al descargar imágenes de un repositorio público, la atribución se determina en función de la afiliación al dominio y la pertenencia a la organización.
- Propiedad de dominio verificada: Al descargar una imagen desde una cuenta vinculada a un dominio verificado, la atribución se establece al propietario de ese [dominio](/enterprise/security/single-sign-on/faqs/domain-faqs/).
- Pertenencia a una única organización:
  - Si el propietario del dominio verificado es una empresa y el usuario forma parte de una sola organización dentro de esa [empresa](/admin/company/company-faqs/), la descarga se atribuye a esa organización específica.
  - Si el usuario forma parte de una sola organización, la descarga se atribuye a esa organización específica.
- Pertenencia a múltiples organizaciones: Si el usuario forma parte de múltiples organizaciones bajo la empresa, la descarga se atribuye al espacio de nombres personal del usuario.

### Autenticación

Para garantizar la correcta atribución de tus descargas, debes autenticarte en Docker Hub. Las siguientes secciones proporcionan información sobre cómo iniciar sesión en Docker Hub para autenticar tus descargas.

#### Docker Desktop

Si estás utilizando Docker Desktop, puedes iniciar sesión en Docker Hub desde el menú de Docker Desktop.

Selecciona **Sign in / Create Docker ID** en el menú de Docker Desktop y sigue las instrucciones en pantalla para completar el proceso de inicio de sesión.

#### Docker Engine

Si estás utilizando una versión independiente de Docker Engine, ejecuta el comando `docker login` desde una terminal para autenticarte en Docker Hub. Para obtener información sobre cómo usar el comando, consulta [docker login](/reference/cli/docker/login/).

#### Docker Swarm

Si estás ejecutando Docker Swarm, debes usar la bandera `--with-registry-auth` para autenticarte en Docker Hub. Para obtener más información, consulta [Create a service](/reference/cli/docker/service/create/#with-registry-auth). Si estás utilizando un archivo de Docker Compose para desplegar una pila de aplicaciones, consulta [docker stack deploy](/reference/cli/docker/stack/deploy/).

#### GitHub Actions

Si estás utilizando GitHub Actions para compilar y enviar imágenes de Docker a Docker Hub, consulta [login action](https://github.com/docker/login-action#dockerhub). Si estás utilizando otra Action, debes agregar tu nombre de usuario y token de acceso de manera similar para la autenticación.

#### Kubernetes

Si estás ejecutando Kubernetes, sigue las instrucciones en [Pull an Image from a Private Registry](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) para obtener información sobre la autenticación.

#### Plataformas de terceros

Si estás utilizando plataformas de terceros, sigue las instrucciones de tu proveedor sobre el uso de la autenticación de registros.

> [!NOTE]
>
> Al descargar imágenes a través de una plataforma de terceros, la plataforma puede usar la misma dirección IPv4 o subred IPv6 /64 para descargar imágenes para múltiples usuarios. Incluso si estás autenticado, las descargas atribuidas a una sola dirección IPv4 o subred IPv6 /64 pueden causar un [límite de tasa por abuso](/docker-hub/usage/#abuse-rate-limit).

- [Artifactory](https://www.jfrog.com/confluence/display/JFROG/Advanced+Settings#AdvancedSettings-RemoteCredentials)
- [AWS CodeBuild](https://aws.amazon.com/blogs/devops/how-to-use-docker-images-from-a-private-registry-in-aws-codebuild-for-your-build-environment/)
- [AWS ECS/Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html)
- [Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml)
- [Chipper CI](https://docs.chipperci.com/builds/docker/#rate-limit-auth)
- [CircleCI](https://circleci.com/docs/guides/execution-managed/private-images/)
- [Codefresh](https://codefresh.io/docs/docs/docker-registries/external-docker-registries/docker-hub/)
- [Drone.io](https://docs.drone.io/pipeline/docker/syntax/images/#pulling-private-images)
- [GitLab](https://docs.gitlab.com/ee/user/packages/container_registry/#authenticate-with-the-container-registry)
- [LayerCI](https://layerci.com/docs/advanced-workflows#logging-in-to-docker)
- [TeamCity](https://www.jetbrains.com/help/teamcity/integrating-teamcity-with-docker.html#Conforming+with+Docker+download+rate+limits)

## Ver descargas mensuales y uso incluido

Puedes ver tus descargas mensuales en la [página de uso](https://hub.docker.com/usage/pulls) en Docker Hub.

En esa página, también puedes enviar un informe a tu correo electrónico que contiene un archivo separado por comas con la siguiente información detallada:

| Columna CSV          | Definición                                                                                                                                                                                                         | Guía de uso                                                                                                                                                                         |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `datehour`           | La fecha y hora (`aaaa/mm/dd/hh`) de la descarga que dio lugar a la transferencia de datos.                                                                                                                                | Esto ayuda a identificar las horas pico de uso y sus patrones.                                                                                                                            |
| `user_name`          | El Docker ID del usuario que descargó la imagen.                                                                                                                                                                    | Esto permite a los propietarios de la organización rastrear el consumo de datos por usuario y gestionar los recursos de manera efectiva.                                                                                     |
| `repository`         | El nombre del repositorio de la imagen descargada.                                                                                                                                                           | Esto te permite identificar qué repositorios son los más visitados y consumen la mayor parte de la transferencia de datos.                                                                       |
| `access_token_name`  | Nombre del token de acceso que se utilizó para la autenticación con la CLI de Docker. Los tokens `generated` se generan automáticamente por el cliente Docker cuando un usuario inicia sesión.                                               | Los tokens de acceso personal se utilizan generalmente para autenticar herramientas automatizadas (Docker Desktop, herramientas CI/CD, etc.). Esto es útil para identificar qué sistema automatizado realizó la descarga. |
| `ips`                | La dirección IP que se utilizó para descargar la imagen. Este campo está agregado, por lo que puede aparecer más de una dirección IP, que representa todas las IP utilizadas para descargar una imagen dentro de la misma fecha y hora.                    | Esto ayuda a comprender el origen de la transferencia de datos, lo cual es útil para diagnosticar e identificar patrones en descargas automatizadas o manuales.                                    |
| `repository_privacy` | El estado de privacidad del repositorio de imágenes descargadas. Puede ser `public` o `private`.                                                                                                               | Esto distingue entre repositorios públicos y privados para identificar qué umbral de transferencia de datos afecta la descarga.                                                              |
| `tag`                | La etiqueta (tag) de la imagen. Solo está disponible si la descarga incluyó una etiqueta.                                                                                                                                       | Esto ayuda a identificar la imagen. Las etiquetas se utilizan a menudo para identificar versiones o variantes específicas de una imagen.                                                                     |
| `digest`             | El digest de imagen único para la imagen.                                                                                                                                                                             | Esto ayuda a identificar la imagen.                                                                                                                                                |
| `version_checks`     | El número de comprobaciones de versión acumuladas para la fecha y hora de cada repositorio de imágenes. Según el cliente, una descarga puede realizar una comprobación de versión para verificar la existencia de una imagen o etiqueta sin descargarla. | Esto ayuda a identificar la frecuencia de las comprobaciones de versión, lo cual se puede utilizar para analizar tendencias de uso y posibles comportamientos inesperados.                                                  |
| `pulls`              | El número de descargas acumuladas para la fecha y hora de cada repositorio de imágenes.                                                                                                                                    | Esto ayuda a identificar la frecuencia de las descargas de repositorios, lo cual se puede utilizar para analizar tendencias de uso y posibles comportamientos inesperados.                                                |

## Ver tasa y límite de descargas

El límite de tasa de descarga se calcula sobre una base de 6 horas. No hay límite de tasa de descarga para usuarios o sistemas automatizados con una suscripción de pago. Los usuarios no autenticados y de Docker Personal que utilicen Docker Hub experimentarán límites de tasa en las descargas de imágenes.

Cuando realizas una descarga y superas el límite, Docker Hub devuelve un código de respuesta `429` con el siguiente cuerpo cuando se solicita el manifiesto:

```text
You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits
```

Este mensaje de error aparece en la CLI de Docker o en los registros de Docker Engine.

Para ver tu tasa y límite de descargas actuales:

> [!NOTE]
>
> Para comprobar tus límites, necesitas tener `curl` y `jq` instalados.

1. Obtén un token.
   - Para obtener un token de forma anónima, si estás realizando descargas de forma anónima:

     ```console
     $ TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)
     ```

   - Para obtener un token con una cuenta de usuario, si estás autenticado, inserta tu nombre de usuario y contraseña en el siguiente comando:

     ```console
     $ TOKEN=$(curl --user 'usuario:contraseña' "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)
     ```

2. Obtén las cabeceras que contienen tus límites. Estas cabeceras se devuelven tanto en solicitudes GET como HEAD. Utilizar GET emula una descarga real y cuenta para el límite. Utilizar HEAD no lo hará.

   ```console
   $ curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest
   ```

3. Examina las cabeceras. Deberías ver las siguientes cabeceras:

   ```text
   ratelimit-limit: 100;w=21600
   ratelimit-remaining: 20;w=21600
   docker-ratelimit-source: 192.0.2.1
   ```

   En el ejemplo anterior, el límite de descargas es de 100 descargas por cada 21600 segundos (6 horas), y quedan 20 descargas.

   Si no ves ninguna cabecera `ratelimit`, podría deberse a que la imagen o tu IP es ilimitada en asociación con un editor, proveedor o una organización de código abierto. También podría significar que el usuario como el que estás descargando forma parte de una suscripción de Docker de pago. Descargar esa imagen no contará para los límites de tasa de descarga si no ves estas cabeceras.

