Libelektra: Докер: достигнут предел скорости извлечения.

Созданный на 1 дек. 2020  ·  18Комментарии  ·  Источник: ElektraInitiative/libelektra

Docker недавно ввел ограничение скорости извлечения для анонимных и бесплатных пользователей. Пределы составляют 100 (анонимно) и 200 (бесплатно) запросов на вытягивание образа контейнера за шесть часов.

Сборки начинают сбоить из-за этого ограничения, и нам нужно будет реализовать исправление или обходной путь.

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

Самый полезный комментарий

если это только 14 изображений докеров, и мы загружаем их только ежемесячно, мы должны быть намного ниже любого лимита?

Кажется, что конвейер Jenkins выполняет задание (я думаю, для веб-сайта), которое все время пытается получить данные из Docker Hub: https://build.libelektra.org/blue/organizations/jenkins/libelektra/detail/PR-3589 / 5 / pipeline / 696

AFAIK это происходит из-за использования build --pull .

Вероятно, нам следует просто использовать build (без --pull ) по умолчанию и запускать его с --pull еженедельно или ежемесячно.

Все 18 Комментарий

Наш сервер сборки должен фактически извлекать данные только из нашего частного реестра докеров, а не из docker.org.

Возможно, проблема связана только с настройкой, которую мы не меняли на сайте hub.libelektra.org? Или есть изображения, которые не отображаются на сайте hub.libelektra.org?

@robaerd, не могли бы вы взглянуть? Это срочно, так как это влияет на наши сборки.

Или есть изображения, которые не отображаются на сайте hub.libelektra.org?

Кажется, он всегда проверяет наличие обновленных базовых образов, которых нет в нашем хабе ...

Кажется, он всегда проверяет наличие обновленных базовых образов, которых нет в нашем хабе ...

Это часть ежемесячной перестройки образов докеров, поскольку месяц является частью идентификатора образа.

Образы докеров в настоящее время снова кэшируются, поэтому перестройка образов докеров не должна происходить, и, следовательно, ошибка не должна повторяться, по крайней мере, в этом месяце.

Я все еще не уверен, как мы можем превысить ограничение в 100 запросов с нашими ~ 14 образами докеров.

Спасибо, что изучили это. : sparkling_heart: Да, это выглядит немного странно: если это всего 14 изображений докеров, и мы загружаем их только ежемесячно, мы должны быть намного ниже любого лимита?

Кажется, он всегда проверяет наличие обновленных базовых образов, которых нет в нашем хабе ...

Настроен ли hub.libelektra.org следующим образом: https://docs.docker.com/registry/recipes/mirror ? Если это так, я понимаю, что проверка того, является ли изображение актуальным, должна учитываться только в квоте, если действительно нужно получить новое изображение.

Самый простой способ обойти квоту - создать учетную запись Docker Hub для CI. Существует программа с открытым исходным кодом , поэтому, вероятно, мы будем иметь право на неограниченную учетную запись.

Могу сделать приложение, если это поможет. Но сначала мы должны выяснить, в чем на самом деле проблема.

Я не знаю, как Docker Hub отслеживает ограничение скорости. Я предполагаю, что он основан на IP, иначе было бы слишком легко сбросить локально. В таком случае, является ли наш сервер сборки единственным, что будет отображаться в Docker Hub через этот IP-адрес?

Да, сервер сборки имеет выделенный IP-адрес, даже несколько, и CI - единственная часть, которая использует докер.

если это только 14 изображений докеров, и мы загружаем их только ежемесячно, мы должны быть намного ниже любого лимита?

Кажется, что конвейер Jenkins выполняет задание (я думаю, для веб-сайта), которое все время пытается получить данные из Docker Hub: https://build.libelektra.org/blue/organizations/jenkins/libelektra/detail/PR-3589 / 5 / pipeline / 696

AFAIK это происходит из-за использования build --pull .

Вероятно, нам следует просто использовать build (без --pull ) по умолчанию и запускать его с --pull еженедельно или ежемесячно.

Спасибо, что узнали! : sparkling_heart:

Спасибо, что нашли причину этой проблемы!

В качестве альтернативы удалению --pull мы также можем создать базовый образ для базы webui без установленной elektra (только с установленными зависимостями и gtests). Затем этот базовый образ, как и другие, будет создаваться ежемесячно, а базовый образ webui будет расширяться из этого базового образа и извлекаться только из нашего частного реестра докеров (и, таким образом, не повлияет на ограничение извлечения)

база webui без установленной elektra

Мне нравится эта идея! Независимо от ограничений на вытягивание Docker, это было бы улучшением!

база webui без установленной elektra

Да, это тоже вариант. Рассматриваемое изображение уже является базовым изображением для фактических изображений webui и elektrad . Таким образом, мы могли просто перенести копирование и сборку Elektra в другие файлы Docker. А может есть решение с многоэтапными сборками? Не уверен, могут ли промежуточные этапы быть отправлены / извлечены из реестров.

Вчера я тестировал разделяемую библиотеку на jenkins, где выполнялся только этап pull. Никакого создания образов, только извлечение из нашего частного реестра докеров на hub.libelektra.org, и я все еще получаю ошибку ограничения скорости Docker. Я посмотрел немного глубже и смог найти причину нашей проблемы.
Это watchtower , запущенный контейнер, который обновляет наши изображения с заданными интервалами. Эта проблема должна быть исправлена ​​в их последней версии . Я обновлю это изображение и установлю более высокое значение для интервала опроса.
Журналы контейнера сторожевой башни также подтверждают мое предположение.

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

Большое спасибо за то, что узнали: sparkling_heart:

@robaerd, можем ли мы закрыть это или что-то еще нужно сделать?

Все образы докеров, используемые на этапе артефактов (веб-интерфейс, веб-сайт, тесты пакетов), по-прежнему извлекаются из docker.org, а не из нашего частного реестра. Я думаю, что это, вероятно, должно быть в отдельной проблеме, поскольку с этим мы никогда не превысим лимит вытягивания докеров. Но после обновления образа сторожевой башни эту проблему нужно исправить, и ИМХО можно закрыть.

Наверное, больше ничего делать не надо. Если мы не достигнем предела, можно будет загрузить с docker.org.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

dmoisej picture dmoisej  ·  3Комментарии

mpranj picture mpranj  ·  3Комментарии

mpranj picture mpranj  ·  3Комментарии

e1528532 picture e1528532  ·  4Комментарии

mpranj picture mpranj  ·  3Комментарии