Контейнерные образы
Arkvory принимает и отдаёт образы по протоколу OCI Distribution (/v2), поэтому с ним работают Docker, Podman, Buildx, containerd, Helm (OCI-чарты) и ORAS. Образ хранится как обычные артефакты репозитория: на него действуют те же права, квоты, проверка SHA-256, retention и резервные копии. Решение и границы — ADR 0063.
Имена
<хост>/<репозиторий>/<образ>:<тег>. Первый сегмент — репозиторий Arkvory, остальное — имя образа (может состоять из нескольких частей):
docker tag web:1.4 arkvory.example.com/releases/team/web:1.4Реестр работает только в корне хоста: Docker не поддерживает префикс пути, поэтому прокси должен пропускать /v2 как есть и без буферизации тела (client_max_body_size 0 в примере nginx). Docker требует HTTPS с доверенным сертификатом; без TLS он работает только с localhost или с адресом из insecure-registries.
Вход
Пароль — ключ Arkvory: сервисный ключ, персональный токен или файловый ключ. Имя пользователя не проверяется.
docker login arkvory.example.com -u ci --password-stdin < key.txtКлюч только для чтения позволяет pull. Для push нужны права записи в репозиторий (upload.create, upload.write, upload.complete). Удалить тег или манифест может только сервисный ключ с действием artifact.delete.
Push и pull
docker push arkvory.example.com/releases/team/web:1.4
docker pull arkvory.example.com/releases/team/web:1.4Слой, который уже есть в репозитории, второй раз не хранится, даже если он из другого образа. Слои разных репозиториев не смешиваются: доступ разграничен по репозиториям. Принимаются манифесты OCI и Docker schema 2, включая многоплатформенные индексы; манифест не больше 4 MiB. Дайджесты — только sha256.
Удаление и место
DELETE /v2/<имя>/manifests/<тег>удаляет тег, а образ остаётся доступен по дайджесту.DELETE /v2/<имя>/manifests/<дайджест>удаляет манифест и все его теги.- Пока манифест хранится, retention не удаляет ни его, ни слои, на которые он ссылается: причина защиты —
reference. После удаления манифеста его артефакты и слои, на которые больше никто не ссылается, удаляет retention или администратор. - Незавершённая загрузка без активности сутки удаляется вместе с временным файлом в
<data>/oci-uploads. Во время загрузки слою временно нужно до двух своих объёмов свободного места.
Ограничения
Нет Referrers API (клиенты переходят на теги), /_catalog, монтирования слоёв между репозиториями, pull-through cache и раздела образов в консоли. Зеркала репозиториев переносят образы вместе с тегами и удалениями; режим импорта по стадиям — нет.