Libelektra: Docker: limite da taxa de pull atingido.

Criado em 1 dez. 2020  ·  18Comentários  ·  Fonte: ElektraInitiative/libelektra

Docker implementou recentemente um limite de taxa de pull para usuários anônimos e gratuitos. Os limites são 100 (anon) e 200 (grátis) solicitações de pull de imagem de contêiner a cada seis horas.

As compilações estão começando a falhar devido a esse limite e precisaremos implementar uma correção ou solução alternativa.

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

Comentários muito úteis

se forem apenas 14 imagens do docker e extrairmos apenas mensalmente, devemos estar bem abaixo de qualquer limite?

Parece que o Jenkins Pipeline executa um trabalho (acho que para o site) que tenta extrair do Docker Hub o tempo todo: https://build.libelektra.org/blue/organizations/jenkins/libelektra/detail/PR-3589 / 5 / pipeline / 696

AFAIK isso acontece por causa do uso de build --pull .

Provavelmente deveríamos apenas usar build (sem --pull ) por padrão e executá-lo com --pull semanal ou mensalmente.

Todos 18 comentários

Nosso servidor de compilação deve, na verdade, extrair apenas de nosso registro docker privado, nunca de docker.org.

O problema talvez seja apenas uma configuração que não alteramos em hub.libelektra.org? Ou existem imagens que não estão espelhadas em hub.libelektra.org?

@robaerd pode dar uma olhada? É urgente, pois afeta nossas construções.

Ou existem imagens que não estão espelhadas em hub.libelektra.org?

Parece que ele sempre verifica se há imagens de base atualizadas que não estão em nosso hub ...

Parece que ele sempre verifica se há imagens de base atualizadas que não estão em nosso hub ...

Isso faz parte da reconstrução mensal das imagens do docker, pois o mês faz parte do id da imagem.

As imagens do docker estão atualmente em cache novamente, portanto, nenhuma reconstrução das imagens do docker deve acontecer e, portanto, o erro não deve ocorrer novamente pelo menos neste mês.

Ainda não tenho certeza de como poderíamos exceder o limite de 100 pull com nossas ~ 14 imagens do docker.

Obrigado por investigar isso. : sparkling_heart: Sim, parece um pouco estranho: se forem apenas 14 imagens do docker e extrairmos apenas mensalmente, deveríamos estar bem abaixo de qualquer limite?

Parece que ele sempre verifica se há imagens de base atualizadas que não estão em nosso hub ...

O hub.libelektra.org está configurado assim: https://docs.docker.com/registry/recipes/mirror ? Em caso afirmativo, meu entendimento é que verificar se a imagem está atualizada deve contar apenas para a cota, se realmente precisar puxar uma nova imagem.

A maneira mais fácil de contornar a cota seria criar uma conta Docker Hub para o IC. Existe um programa de código aberto , então provavelmente seríamos elegíveis para uma conta ilimitada.

Eu poderia fazer o aplicativo se ajudar. Mas primeiro devemos descobrir qual é realmente o problema.

Não sei como o Docker Hub rastreia o limite de taxa. Presumo que seja baseado no IP, caso contrário, seria muito fácil redefinir localmente. Nesse caso, nosso servidor de compilação é a única coisa que apareceria no Docker Hub por meio desse IP?

Sim, o servidor de build tem um IP dedicado, até mesmo vários, e o CI é a única parte que usa docker.

se forem apenas 14 imagens do docker e extrairmos apenas mensalmente, devemos estar bem abaixo de qualquer limite?

Parece que o Jenkins Pipeline executa um trabalho (acho que para o site) que tenta extrair do Docker Hub o tempo todo: https://build.libelektra.org/blue/organizations/jenkins/libelektra/detail/PR-3589 / 5 / pipeline / 696

AFAIK isso acontece por causa do uso de build --pull .

Provavelmente deveríamos apenas usar build (sem --pull ) por padrão e executá-lo com --pull semanal ou mensalmente.

Obrigado por descobrir! : sparkling_heart:

Obrigado por encontrar a causa deste problema!

Como alternativa para remover --pull , também poderíamos criar uma imagem base para a base webui sem elektra instalado ainda (apenas com as dependências e gtests instalados). Essa imagem de base seria então - como as outras - construída mensalmente e a imagem de base do webui se estenderia a partir dessa imagem de base e apenas puxaria de nosso registro docker privado (e, portanto, não afetaria o limite de pull)

base webui sem elektra instalado ainda

Eu gosto desta ideia! Independentemente dos limites de pull do Docker, isso seria uma melhoria!

base webui sem elektra instalado ainda

Sim, isso também seria uma opção. A imagem em questão já é a imagem base para as imagens webui e elektrad reais. Portanto, poderíamos simplesmente mover a cópia e a construção do Elektra para os outros Dockerfiles. Ou talvez haja uma solução com compilações de vários estágios? Não tenho certeza se os estágios intermediários podem ser empurrados para / puxados de registros.

Ontem eu estava testando a biblioteca compartilhada em jenkins onde apenas o pull-stage foi executado. Sem construção de imagem, apenas puxando de nosso registro docker privado em hub.libelektra.org e ainda recebo o erro de limite de taxa do Docker. Procurei um pouco mais a fundo e consegui descobrir a causa do nosso problema.
É watchtower , um contêiner em execução que atualiza nossas imagens em intervalos especificados. Esse problema deve ser corrigido em sua versão mais recente . Vou atualizar esta imagem e definir o intervalo de votação para um valor mais alto.
Os registros do contêiner da torre de vigia também confirmam minha suposição.

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."

Muito obrigado por descobrir: sparkling_heart:

@robaerd podemos fechar isso ou temos mais alguma coisa para fazer?

Todas as imagens docker usadas no estágio de artefato (webui, site, testes de pacote) ainda são extraídas de docker.org em vez de nosso registro privado. Eu acho que isso provavelmente deveria ser um problema separado, já que nunca excederíamos o limite de puxar do docker com isso. Mas desde a atualização da imagem da torre de vigia, este problema deve ser corrigido e IMHO pode ser fechado.

Provavelmente, nada mais precisa ser feito. Se não atingirmos os limites, não há problema em puxar do docker.org.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

markus2330 picture markus2330  ·  3Comentários

mpranj picture mpranj  ·  4Comentários

mpranj picture mpranj  ·  3Comentários

sanssecours picture sanssecours  ·  3Comentários

markus2330 picture markus2330  ·  4Comentários