Ошибка извлечения образа докера с сингулярностью из реестра контейнеров gitlab

Я пытаюсь извлечь образ докера из моего реестра контейнеров Gitlab, используя singularity pull (так как я хочу использовать его сингулярность), но я получаю сообщение об ошибке, сообщающее мне, что один файл не является tar-архивом. Действительно, этот файл содержит <?xml version='1.0' encoding='UTF-8'?><Error><Code>AuthenticationRequired</Code><Message>Authentication required.</Message></Error>.

Работающая команда: docker pull registry.gitlab.com/uit-sfb/metapipe/preprocess-reads:master.
Команда, которая не работает: singularity pull docker://registry.gitlab.com/uit-sfb/metapipe/preprocess-reads:master

Дело в том, что мой репозиторий публичный и доступ к нему есть у всех. Так чего мне не хватает??

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
46
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

У вас должна быть возможность создать образ Singularity из образа Docker, размещенного в Docker Hub, с помощью:

singularity build your-image.sif docker://maintainer/image:tag

Так как это не образ, размещенный в концентраторе Docker, а в gitlab, команда сборки должна работать с адресом oras (реестр OCI как хранилище).

В вашем случае использования что-то вроде этого:

singularity pull preprocess-reads-master.sif oras://gitlab-registry/uit-sfb/metapipe/preprocess-reads:master

или это:

singularity pull preprocess-reads-master.sif oras://registry.gitlab.com/uit-sfb/metapipe/preprocess-reads:master

Я уже пробовал это, но получаю следующую ошибку: FATAL: While pulling image from oci registry: error fetching image to cache: failed to get checksum for oras://registry.gitlab.com/uit-sfb/metapipe/preprocess-reads‌​:master: could not get image manifest, received mediaType: application/vnd.docker.distribution.manifest.v2+json (для второй команды).

stackoverflowed 23.03.2022 10:55

Я думаю, что ответ от @tsnowlan должен решить исходную проблему. Единственным другим советом по устранению неполадок будет проверка версии Docker Engine, используемой на вашем хост-компьютере, и версии, используемой для сборки образа, в реестре gitlab, чтобы убедиться, что они совместимы (например, обе созданы с помощью v2 API), как описано здесь: docs.gitlab.com/ee/user/packages/container_registry/…

pcamach2 23.03.2022 16:08

После перезагрузки моей машины это сработало... Спасибо за вашу помощь.

stackoverflowed 24.03.2022 13:16
Ответ принят как подходящий

Я могу запустить singularity pull docker://registry.gitlab.com/uit-sfb/metapipe/preprocess-reads:master без проблем, что предполагает проблему с окружающей средой или аутентификацией. Если установлены переменные SINGULARITY_DOCKER_USERNAME или SINGULARITY_DOCKER_PASSWORD, сингулярность попытается использовать их для реестров докеров все. Кроме того, если вы использовали singularity remote login docker://registry.gitlab.com с учетными данными gitlab, действительными для этого репозитория/группы, но не имеете доступа к реестру контейнеров, вы также увидите проблему аутентификации.

  • Проверьте настроенные пульты и выйдите из данного реестра, если они указаны
singularity remote list
# Cloud Services Endpoints
# ========================
# 
# NAME         URI              ACTIVE  GLOBAL  EXCLUSIVE  INSECURE
# SylabsCloud  cloud.sylabs.io  YES     YES     NO         NO
# 
# Keyservers
# ==========
# 
# URI                     GLOBAL  INSECURE  ORDER
# https://keys.sylabs.io  YES     NO        1*
# 
# * Active cloud services keyserver
# 
# Authenticated Logins
# =================================
# 
# URI                           INSECURE
# docker://registry.gitlab.com  NO
#
singularity remote logout docker://registry.gitlab.com
  • Попробуйте запустить команду pull в чистой среде.
env -i $(which singularity) pull docker://registry.gitlab.com/uit-sfb/metapipe/preprocess-reads:master

ссылка: Singularity + документация по реестрам, не относящимся к Docker

Я перезапустил свою машину, и это сработало. Как вы сказали, это, скорее всего, проблема с докером и/или версией/средой Singularity, которая была исправлена ​​​​после перезапуска. Спасибо за Ваш ответ.

stackoverflowed 24.03.2022 13:18

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