Ошибки аутентификации Docker Hub: Credential Helpers и обход Rate Limit (429)
- Ошибка
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 ratelimit2. Настройка безопасного хранилища 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 Частые вопросы (FAQ)
Каковы лимиты на скачивание образов в Docker Hub?
Для анонимных пользователей действует лимит 100 скачиваний за 6 часов на один публичный IP. Для авторизованных бесплатных аккаунтов (Free Docker ID) — 200 скачиваний за 6 часов.
Почему при docker login пароль сохраняется в формате base64?
По умолчанию Docker сохраняет учетные данные в незашифрованном Base64 виде в ~/.docker/config.json. Для шифрования необходимо использовать credsStore (pass, osxkeychain или wincred).