Зеркало реестра Docker

Я пытаюсь установить зеркало докера в качестве зеркала по умолчанию для извлечения/передачи изображений.

В соответствии с документацией я уже установил файл /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.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
2 339
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
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 и начать внедрять неизвестные или даже вредоносные образы на ваш сервер.

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

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

ricosega 15.12.2020 18:26

@ricosega, пытающаяся использовать зеркало, чтобы не указывать имя реестра, вызывает больше проблем, чем решает. Это не должно быть чем-то, что вы постоянно печатаете, используйте компоновочный файл или манифест kubernetes.

BMitch 15.12.2020 18:44

Другие вопросы по теме