Docker-образы
Arbocrate Container Registry — это интерфейс для работы с Docker-образами.
Как Container Registry интегрирован в Spirit:
- сквозная аутентификация пользователей через Spirit CLI;
- работают сервис-аккаунты;
- учитывается система полномочий и ролей.
В интерфейсе Spirit есть раздел Docker-образы, в котором хранятся образы и их данные.
Ограничения
Вы можете пользоваться Container Registry от имени:
- пользовательской учётки Spirit — может делать pull;
- сервис-аккаунта — может делать pull и push, но push только с ролью «Artifact publisher».
Ограничения:
- доступ в registry только у пользователей Spirit в рамках Тенанта;
- pull — доступен пользователям и сервис-аккаунтам Spirit вне зависимости от их ролей;
- push — только для сервис-аккаунтов с ролью «Artifact publisher», и только в свой тенант;
- публикация образов сервис-аккаунтами — только по путям, относящимся к тенанту, которому он принадлежит;
- публикация образов пользовательскими учётками — запрещено;
- все образы защищены от перезаписи, исключение — образы с тегами «latest», «stable»;
Docker-образы в интерфейсе
Чтобы посмотреть список образов:
- Зайдите в Spirit.
- Выберите тенант в правом верхнем углу. В новом интерфейсе — в левом.
- Нажмите в левом меню Реестр контейнеров → Docker-образы. В новом
интерфейсе — Сборка → Docker-образы.

Как посмотреть Docker-образы через docker search
Чтобы скопировать полный путь к образу с тегом в Container Registry:
-
Раскройте образ из списка.
-
Найдите подходящий тег и нажмите Copy правее.

Пример пути:
acr.polygon.tcsgroup.io/spirit/cicd-images/base-kaniko:latest.
Настройка локального окружения
-
Откройте терминал и авторизирутесь:
- для пользовательской учётки:
dp auth login- для сервис-аккаунта:
dp auth service-acc --key-file service-account-key.jsonГде
service-account-key.json— файл ключа сервис-аккаунта. -
Сконфигурируйте Docker командой:
dp auth configure-dockerКоманда настроит ваш клиент Docker и зарегистрирует Credhelper — утилиту для сквозной аутентификации Spirit.
Ошибка: «invalid character after object key:value pair»
У вас невалидный файл ~/.docker/config.json. Как решить проблему:
- Провалидируйте
.jsonили удалите его. - Введите команду ещё раз:
dp auth configure-docker
Файл создастся заново и будет валидным
- Проверьте, работает ли 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 — только с сервис-аккаунта, но есть ограничения:
-
Нужна роль «Artifact publisher». Выдать её может пользователь с ролью «Project Lead» в вашем тенанте.
-
Только по путям, относящимся к тенанту Spirit. Это репозитории вида
<тенант>/<имя образа>:<tag/sha>. Например,docs/documentation:release-1.2.0.
Частые ошибки при 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 окружении, он удалится через неделю с погашения его последней нагрузки.