Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

DOCKER_PULL_RATE_LIMIT Linux / DevOps

Ошибки аутентификации Docker Hub: Credential Helpers и обход Rate Limit (429)

Обновлено: 21.08.2026
  • Ошибка toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits.
  • Предупреждение безопасности о хранении незашифрованных токенов в ~/.docker/config.json.
  • Ошибка docker login: Error saving credentials: error storing credentials in strength store.

1. Проверка текущих лимитов Docker Hub через curl

Получите анонимный токен и запросите заголовки квоты скачивания (RateLimit-Remaining):

TOKEN=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)
curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest 2>&1 | grep -i ratelimit

2. Настройка безопасного хранилища Docker Credentials (pass / secretservice)

# Установка хелпера на Debian/Ubuntu
apt-get install -y pass docker-credential-pass

# Инициализация GPG ключа для pass
gpg --generate-key
pass init <your_gpg_key_id>

В файле ~/.docker/config.json укажите помощник:

{
  "credsStore": "pass"
}

3. Настройка локального Registry-Mirror для обхода лимитов

Отредактируйте /etc/docker/daemon.json на рабочих нодах:

{
  "registry-mirrors": [
    "https://mirror.gcr.io",
    "https://registry.internal.domain.com"
  ]
}
systemctl daemon-reload && systemctl restart docker
💡 Практика специалистов: В CI/CD пайплайнах (GitLab CI, GitHub Actions) всегда разворачивайте локальный кэширующий прокси-реестр (например, Nexus, Harbor или Registry pull-through cache), чтобы раннеры не блокировались лимитами Docker Hub.

Частые вопросы (FAQ)

Каковы лимиты на скачивание образов в Docker Hub?

Для анонимных пользователей действует лимит 100 скачиваний за 6 часов на один публичный IP. Для авторизованных бесплатных аккаунтов (Free Docker ID) — 200 скачиваний за 6 часов.

Почему при docker login пароль сохраняется в формате base64?

По умолчанию Docker сохраняет учетные данные в незашифрованном Base64 виде в ~/.docker/config.json. Для шифрования необходимо использовать credsStore (pass, osxkeychain или wincred).

Полезные материалы
Рекомендуем