Как создать новый тег для образа Docker и загрузить его на реестр?

Как мне правильно запушить образ проекта в локальной сети с помощью Docker? У меня есть API на asp .net, который запускается в контейнере локально. Я создаю образ с помощью команды `docker build -t my-service .`, затем использую `docker tag` для создания тега, и пытаюсь запушить образ в локальный репозиторий с помощью `docker push`. Однако, при попытке запушить образ, возникает ошибка "unsupported". Какие могут быть причины этой ошибки и как её исправить? Также, на компьютере, к которому указан доступ (ip_in_local":5000), возникает ошибка: "error parsing HTTP 401 response body: unexpected end of JSON input: """.
  • 31 января 2024 г. 11:41
Ответы на вопрос 2
1. Создание нового тега для образа Docker:

Для того чтобы создать новый тег для уже существующего образа Docker, вы должны использовать команду `docker tag`, например:

```bash
docker tag my-service:latest my-local-registry.com:5000/my-service:latest
```

В этом примере `my-service:latest` - это имя существующего образа и тег, а `my-local-registry.com:5000/my-service:latest` - это новый тег, включающий URL вашего локального реестра и порт, на котором он работает.

2. Загрузка тега в реестр:

Перед тем как запушить образ в реестр, убедитесь, что докер настроен на работу с вашим локальным реестром. Если реестр использует самоподписанные сертификаты, вам потребуется указать Docker'у, что он должен доверять этому реестру. Для Linux это делается путем добавления файла конфигурации в `/etc/docker/daemon.json`, в котором устанавливается `insecure-registries`.

Если все готово, запушить образ можно следующей командой:

```bash
docker push my-local-registry.com:5000/my-service:latest
```

3. Ошибки при пушении:

- "unsupported": Эта ошибка может быть вызвана разными причинами, одна из которых - попытка использовать функцию, не поддерживаемую локальным реестром. Убедитесь, что реестр настроен правильно и поддерживает необходимые API.
- "error parsing HTTP 401 response body": Эта ошибка часто указывает на проблемы с аутентификацией. HTTP 401 означает, что запрос не авторизован. Убедитесь в следующем:
  - Ваш локальный реестр настроен на использование аутентификации и вы предоставили правильные данные для входа.
  - Если локальный реестр не использует аутентификацию, проверьте конфигурацию, чтобы убедиться, что он настроен правильно.

4. Проблемы с JSON:

Проблема с "unexpected end of JSON input" может быть связана с тем, что сервер реестра не возвращает корректный JSON-ответ при попытке аутентификации. Это может быть связано с ошибкой конфигурации сервера, либо с проблемой в его работе.

Решение:

- Проверьте логи сервера реестра, чтобы понять, что произошло во время неудачной попытки аутентификации.
- Если вы используете прокси, убедитесь, что оно настроено правильно и не блокирует трафик Docker.
- Если ваш локальный реестр должен работать без аутентификации, убедитесь, что вы его правильно настроили и перезапустили службу Docker после изменения конфигурации.
- Проверьте, соответствует ли версия Docker, которую вы используете, версии API реестра. Возможно, потребуется обновить ваш Docker до последней версии.

Как только вы выясните и устраните причину ошибок, вы сможете успешно запушить ваш образ в локальный Docker реестр.
Читать до полного просветления https://www.docker.com/blog/how-to-use-your-own-re... 
И вот еще на русском, неплохой мануал
https://winitpro.ru/index.php/2021/03/03/nastrojka...
Похожие вопросы