Я пытаюсь установить зеркало докера в качестве зеркала по умолчанию для извлечения/передачи изображений.
В соответствии с документацией я уже установил файл /etc/docker/daemon.json со следующим:
{
"registry-mirrors": ["https://localregistry"]
}
Затем я пробую следующее:
docker login localregistry
docker pull localregistry/image:tag > it works
docker pull image:tag > doesn't work
Я всегда получаю "no basic auth credentials error"
от демона докера, но из журнала реестра я получаю err.code = "manifest unknown" err.detail = "unknown tag"
Есть идеи? Я использую докер версии 19.03.08.
docker login localregistry
Во-первых, я надеюсь, что это изменение названия вопроса, потому что имя реестра localregistry
не будет работать...
docker pull localregistry/image:tag > it works
Тот факт, что это работает, указывает на то, что у вас, вероятно, есть имя реестра с .
или :
в имени хоста. В противном случае docker попытается получить localregistry/image:tag
от пользователя localregistry
в Docker Hub.
docker pull image:tag > doesn't work
Это всегда должно работать, сбои должны быть прозрачны для пользователя, если это действительно зеркало Docker Hub. Что происходит, так это то, что он разрешает это имя в docker.io/library/image:tag
, сначала пытается извлечь из localregistry/library/image:tag
, и любая ошибка возвращается к извлечению из Docker Hub, и любая ошибка там, наконец, отображается пользователю.
Скорее всего, проблема в том, что вы не указали library
в качестве имени репозитория для вашего образа в локальном реестре.
Если вы используете это для включения образов, которых нет в Docker Hub, я бы пропустил зеркало и просто явно указал на зеркало. В противном случае создается много возможностей для неинтуитивных сбоев, которые нелегко увидеть. Например. устаревший образ может быть отправлен на ваше зеркало вместо исходного образа, и Docker перестанет получать обновления из восходящего потока. А поскольку любые ошибки зеркалирования возвращаются в Hub, если вы используете имя образа, над которым у вас нет контроля, кто-то другой может взять это имя в Hub и начать внедрять неизвестные или даже вредоносные образы на ваш сервер.
Если это не отвечает на ваш вопрос, я бы рекомендовал использовать ваш вопрос с фактическими именами изображений и сообщениями об ошибках из журналов, показывающими, что конкретно не удалось (вы можете замаскировать часть имени реестра, если это необходимо).
@ricosega, пытающаяся использовать зеркало, чтобы не указывать имя реестра, вызывает больше проблем, чем решает. Это не должно быть чем-то, что вы постоянно печатаете, используйте компоновочный файл или манифест kubernetes.
Я пропустил, чтобы сказать, что это среда с воздушным зазором, поэтому сначала я загрузил изображения, а затем загрузил их в свой реестр. Чего я хочу добиться, так это иметь возможность извлекать любое изображение из моего реестра без необходимости добавлять URL-адрес моего реестра во все изображения.