Libelektra: Docker: límite de velocidad de extracción alcanzado.

Creado en 1 dic. 2020  ·  18Comentarios  ·  Fuente: ElektraInitiative/libelektra

Docker ha implementado recientemente un límite de velocidad de extracción para usuarios anónimos y gratuitos. Los límites son 100 (anon) y 200 (gratis) solicitudes de extracción de imágenes de contenedor cada seis horas.

Las compilaciones están comenzando a fallar debido a este límite y tendremos que implementar una solución o solución.

docker build -t hub.libelektra.org/build-elektra-alpine:202012-0e6d95bb97e68999c969280c59562b159b8a0ecbee2a5aba451fe640081032de --pull --build-arg JENKINS_GROUPID=47110 --build-arg JENKINS_USERID=47110 --build-arg PARALLEL=12 --build-arg BASE_IMG=hub.libelektra.org/build-elektra-web-base:master_299 -f ./scripts/docker/alpine/3.12/Dockerfile ./scripts/docker/alpine/3.12
Sending build context to Docker daemon  6.144kB

Step 1/7 : FROM alpine:3.12.1
toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
script returned exit code 1
continuous integration

Comentario más útil

si son solo 14 imágenes de la ventana acoplable y solo extraemos mensualmente, ¿deberíamos estar muy por debajo de cualquier límite?

Parece que Jenkins Pipeline ejecuta un trabajo (creo que para el sitio web) que intenta extraer de Docker Hub todo el tiempo: https://build.libelektra.org/blue/organizations/jenkins/libelektra/detail/PR-3589 / 5 / pipeline / 696

AFAIK, esto sucede debido al uso de build --pull .

Probablemente deberíamos usar build (sin --pull ) de forma predeterminada y ejecutarlo con --pull semanal o mensual.

Todos 18 comentarios

En realidad, nuestro servidor de compilación solo debería extraer de nuestro registro de Docker privado, nunca de docker.org.

¿Es posible que el problema sea solo una configuración que no cambiamos en hub.libelektra.org? ¿O hay imágenes que no se reflejan en hub.libelektra.org?

@robaerd , ¿puedes echar un vistazo? Es urgente, ya que afecta nuestras construcciones.

¿O hay imágenes que no se reflejan en hub.libelektra.org?

Parece que siempre busca imágenes base actualizadas que no están en nuestro hub ...

Parece que siempre busca imágenes base actualizadas que no están en nuestro hub ...

Esto es parte de la reconstrucción mensual de las imágenes de la ventana acoplable, ya que el mes es parte de la identificación de la imagen.

Las imágenes de la ventana acoplable se almacenan en caché nuevamente, por lo que no debería ocurrir ninguna reconstrucción de las imágenes de la ventana acoplable y, por lo tanto, el error no debería volver a ocurrir al menos este mes.

Todavía no estoy seguro de cómo podríamos superar el límite de extracción de 100 con nuestras ~ 14 imágenes de la ventana acoplable.

Gracias por investigarlo. : sparkling_heart: Sí, se ve un poco extraño: si solo son 14 imágenes de la ventana acoplable y extraemos solo mensualmente, ¿deberíamos estar muy por debajo de cualquier límite?

Parece que siempre busca imágenes base actualizadas que no están en nuestro hub ...

¿Hub.libelektra.org está configurado así: https://docs.docker.com/registry/recipes/mirror ? Si es así, tengo entendido que la verificación de si la imagen está actualizada solo debería contar para la cuota, si realmente necesita extraer una nueva imagen.

La forma más sencilla de evitar la cuota sería crear una cuenta de Docker Hub para el CI. Existe un programa de código abierto , por lo que probablemente seríamos elegibles para una cuenta ilimitada.

Podría hacer la aplicación si ayuda. Pero primero debemos averiguar cuál es realmente el problema.

No sé cómo Docker Hub rastrea el límite de velocidad. Supongo que se basa en IP, de lo contrario, sería demasiado fácil restablecerlo localmente. En ese caso, ¿es nuestro servidor de compilación lo único que le aparecería a Docker Hub a través de esta IP?

Sí, el servidor de compilación tiene una IP dedicada, incluso varias, y el CI es la única parte que usa la ventana acoplable.

si son solo 14 imágenes de la ventana acoplable y solo extraemos mensualmente, ¿deberíamos estar muy por debajo de cualquier límite?

Parece que Jenkins Pipeline ejecuta un trabajo (creo que para el sitio web) que intenta extraer de Docker Hub todo el tiempo: https://build.libelektra.org/blue/organizations/jenkins/libelektra/detail/PR-3589 / 5 / pipeline / 696

AFAIK, esto sucede debido al uso de build --pull .

Probablemente deberíamos usar build (sin --pull ) de forma predeterminada y ejecutarlo con --pull semanal o mensual.

¡Gracias por averiguarlo! : corazón_deslumbrante:

¡Gracias por encontrar la causa de este problema!

Alternativamente a eliminar --pull , también podríamos crear una imagen base para la base webui sin elektra instalado todavía (solo con las dependencias y gtests instalados). Esta imagen base se construiría entonces, como las otras, mensualmente y la imagen base de webui se extendería desde esta imagen base y solo se extraería de nuestro registro de docker privado (y por lo tanto no afectaría el límite de extracción)

base webui sin elektra instalado todavía

¡Me gusta esta idea! Independientemente de los límites de extracción de Docker, ¡esto sería una mejora!

base webui sin elektra instalado todavía

Sí, esa también sería una opción. La imagen en cuestión ya es la imagen base para las imágenes reales webui y elektrad . Así que podríamos mover la copia y compilación de Elektra a los otros Dockerfiles. ¿O tal vez hay una solución con compilaciones de varias etapas? No estoy seguro, si las etapas intermedias se pueden enviar / extraer de los registros.

Ayer estuve probando la biblioteca compartida en jenkins donde solo se ejecutó la etapa de extracción. Sin creación de imágenes, solo extrayendo de nuestro registro de Docker privado en hub.libelektra.org y todavía recibo el error de límite de velocidad de Docker. Investigué un poco más y logré encontrar la causa de nuestro problema.
Es watchtower , un contenedor en ejecución que actualiza nuestras imágenes a intervalos específicos. Este problema debería solucionarse en su última versión . Actualizaré esta imagen y estableceré el intervalo de encuesta en un valor más alto.
Los registros del contenedor de la torre de vigilancia también confirman mi suposición.

time="2020-11-16T22:22:58Z" level=info msg="Unable to update container /frontend_repo_1, err='Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit'. Proceeding to next."
time="2020-11-16T22:22:59Z" level=info msg="Unable to update container /frontend_registry_1, err='Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit'. Proceeding to next."
time="2020-11-16T22:23:00Z" level=info msg="Unable to update container /frontend_letsencrypt-nginx-proxy-companion_1, err='Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit'. Proceeding to next."
time="2020-11-16T22:23:01Z" level=info msg="Unable to update container /frontend_nginx-proxy_1, err='Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit'. Proceeding to next."
time="2020-11-16T22:23:02Z" level=info msg="Unable to update container /frontend_watchtower_1, err='Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit'. Proceeding to next."
time="2020-11-16T22:23:04Z" level=info msg="Unable to update container /frontend_libelektra-webui_1, err='Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit'. Proceeding to next."
time="2020-11-16T22:23:28Z" level=info msg="Unable to update container /frontend_repo_1, err='Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit'. Proceeding to next."
time="2020-11-16T22:23:29Z" level=info msg="Unable to update container /frontend_registry_1, err='Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit'. Proceeding to next."
time="2020-11-16T22:23:30Z" level=info msg="Unable to update container /frontend_letsencrypt-nginx-proxy-companion_1, err='Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit'. Proceeding to next."

Muchas gracias por descubrir: sparkling_heart:

@robaerd, ¿podemos cerrar esto o hay algo más que hacer?

Todas las imágenes de la ventana acoplable utilizadas en la etapa de artefactos (webui, sitio web, pruebas de paquetes) aún se obtienen de docker.org en lugar de nuestro registro privado. Creo que esto probablemente debería estar en un problema separado, ya que nunca excederíamos el límite de extracción de la ventana acoplable con esto. Pero desde la actualización de la imagen de la torre de vigilancia, este problema debería solucionarse y en mi humilde opinión se puede cerrar.

Probablemente no sea necesario hacer nada más. Si no llegamos a los límites, en mi humilde opinión está bien extraer de docker.org.

¿Fue útil esta página
0 / 5 - 0 calificaciones