Skip to main content

Docker-образы

Arbocrate Container Registry — это интерфейс для работы с Docker-образами.

Как Container Registry интегрирован в Spirit:

В интерфейсе Spirit есть раздел Docker-образы, в котором хранятся образы и их данные.

Ограничения

Вы можете пользоваться Container Registry от имени:

Ограничения:

  • доступ в registry только у пользователей Spirit в рамках Тенанта;
  • pull — доступен пользователям и сервис-аккаунтам Spirit вне зависимости от их ролей;
  • push — только для сервис-аккаунтов с ролью «Artifact publisher», и только в свой тенант;
  • публикация образов сервис-аккаунтами — только по путям, относящимся к тенанту, которому он принадлежит;
  • публикация образов пользовательскими учётками — запрещено;
  • все образы защищены от перезаписи, исключение — образы с тегами «latest», «stable»;

Docker-образы в интерфейсе

Чтобы посмотреть список образов:

  1. Зайдите в Spirit.
  2. Выберите тенант в правом верхнем углу. В новом интерфейсе — в левом.
  3. Нажмите в левом меню Реестр контейнеров → Docker-образы. В новом интерфейсе — СборкаDocker-образы.

Как посмотреть Docker-образы через docker search

Чтобы скопировать полный путь к образу с тегом в Container Registry:

  1. Раскройте образ из списка.

  2. Найдите подходящий тег и нажмите Copy правее.

Пример пути: acr.polygon.tcsgroup.io/spirit/cicd-images/base-kaniko:latest.

Настройка локального окружения

  1. Скачайте и установите Spirit CLI.

  2. Откройте терминал и авторизирутесь:

    • для пользовательской учётки:
    dp auth login
    • для сервис-аккаунта:
    dp auth service-acc --key-file service-account-key.json

    Где service-account-key.json — файл ключа сервис-аккаунта.

  3. Сконфигурируйте Docker командой:

    dp auth configure-docker

    Команда настроит ваш клиент Docker и зарегистрирует Credhelper — утилиту для сквозной аутентификации Spirit.

Ошибка: «invalid character after object key:value pair»

У вас невалидный файл ~/.docker/config.json. Как решить проблему:

  1. Провалидируйте .json или удалите его.
  2. Введите команду ещё раз:
dp auth configure-docker

Файл создастся заново и будет валидным

  1. Проверьте, работает ли pull:
docker pull acr.polygon.t-technologies.ru/spirit/cicd-images/base-kaniko:latest

Пример успешного ответа:

    latest: Pulling from spirit/cicd-images/base-kaniko
Digest: sha256:2f14eb2c11b47bca338db795b0dadb712535f0d302929ce10b06b792e73a3b1c
Status: Downloaded newer image for acr.polygon.t-technologies.ru/spirit/cicd-images/base-kaniko:latest
acr.polygon.t-technologies.ru/spirit/cicd-images/base-kaniko:latest

Авторизация

Как работает Docker credential helpers

Чтобы авторизоваться в системе без браузера, используйте сервис-аккаунты.

Чтобы авторизоваться в WSL без браузера используйте:

  • wslu
  • или команду BROWSER=wslview dp auth login.

Pull и Push

Репозитории артефактов в нашей инсталляции для образов pull или push: acr.polygon.t-technologies.ru

Pull

Pull — с пользовательской учётки Spirit или сервис-аккаунта.

Чтобы скачать образ, подставьте перед ним домен: acr.polygon.t-technologies.ru

Вы можете скопировать полный путь до образа через интерфейс.

Пример команды и ответа

Команда:

docker pull acr.polygon.t-technologies.ru/spirit/cicd-images/base-kaniko:latest

Ответ:

latest: Pulling from spirit/cicd-images/base-kaniko
Digest: sha256:2f14eb2c11b47bca338db795b0dadb712535f0d302929ce10b06b792e73a3b1c
Status: Downloaded newer image for acr.polygon.t-technologies.ru/spirit/cicd-images/base-kaniko:latest
acr.polygon.t-technologies.ru/spirit/cicd-images/base-kaniko:latest

Push

Push — только с сервис-аккаунта, но есть ограничения:

Частые ошибки при push:

Ошибка: «User is unauthorized to upload to»

Нельзя пушить с пользовательской учётки. Используйте сервис-аккаунт с ролью «Artifact publisher».

Ошибка: «Could not push image: unauthorized: Pushing Docker images with manifest v2 schema 1 to this repository is blocked»

У вас нет прав на перезапись образа. Все артефакты защищенные. Исключение — Docker-образы с тегами «latest», «stable».

Чтобы решить проблему, измените тег.

Connection reset by peer при использовании JIB-плагина

Данная ошибка скорее всего возникает из-за того, что слой при билде образа не успевает загрузиться за 20 секунд, которые выставлены по дефолту в JIB плагине (jib.httpTimeout).

Для исправления нужно поднять это значение в вашем конфиге для maven/gradle.

Удалить образ

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

Retention policy или политика очистки — правила о том, удаляются ли образы, и если да — когда. Политика работает для каждого имени образа и в его контексте.

МаскаПравила
^(latest stable)$Правила не применяются, образы не удаляются.
^releaseПолитика применяется только для образов старше 7 дней, более новые образы не обрабатываются оставляем 10 последних тегов, на удаление помечаются самые старые образы
Всё остальноеПолитика применяется только для образов старше 7 дней, более новые образы не обрабатываются оставляем 20 последних тегов, на удаление помечаются самые старые образы

Если образ запускался в Runtime кластерах от команды k8s в prod окружении, он удалится через неделю с погашения его последней нагрузки.