Docker
NORA реализует спецификацию OCI Distribution Spec 1.1 для хранения и проксирования контейнерных образов Docker. Загружайте собственные образы и при необходимости кешируйте загрузки из Docker Hub или других upstream-реестров.
Настройка клиента
Заголовок раздела «Настройка клиента»Тегируйте и загружайте образы, используя адрес NORA напрямую:
# Тегирование существующего образаdocker tag myapp:latest nora.example.com:4000/myapp:latest
# Загрузка в реестрdocker push nora.example.com:4000/myapp:latest
# Скачивание из реестраdocker pull nora.example.com:4000/myapp:latestДля небезопасных (HTTP) реестров добавьте NORA в конфигурацию демона Docker (/etc/docker/daemon.json):
{ "insecure-registries": ["nora.example.com:4000"]}После редактирования перезапустите Docker.
Проксирование upstream
Заголовок раздела «Проксирование upstream»NORA может выступать в роли pull-through кеша для Docker Hub и других реестров. Если образ не найден локально, NORA загружает его из настроенных upstream-источников.
config.toml:
[docker]enabled = trueproxy_timeout = 60
[[docker.upstreams]]url = "https://registry-1.docker.io"
[[docker.upstreams]]url = "https://ghcr.io"auth = "user:token" # опциональная базовая аутентификацияПеременные окружения:
| Переменная | Описание | По умолчанию |
|---|---|---|
NORA_DOCKER_ENABLED | Включить реестр Docker | true |
NORA_DOCKER_PROXIES | Upstream URL через запятую (url1,url2 или url1|auth1,url2) | https://registry-1.docker.io |
NORA_DOCKER_PROXY_TIMEOUT | Таймаут upstream в секундах | 60 |
Возможности
Заголовок раздела «Возможности»| Endpoint / Функция | Статус | Примечание |
|---|---|---|
/v2/ (проверка версии) | Полная | Проверка версии API |
/v2/_catalog (список репозиториев) | Полная | Список всех репозиториев |
/v2/{name}/tags/list | Полная | Список тегов образа |
/v2/{name}/manifests/{ref} GET/HEAD/PUT/DELETE | Полная | По тегу или дайджесту |
/v2/{name}/blobs/{digest} GET/HEAD/DELETE | Полная | Скачивание/проверка/удаление слоёв |
/v2/{name}/blobs/uploads/ POST/PATCH/PUT | Полная | Потоковая загрузка (chunked upload) |
Пути с namespace (org/image) | Полная | Двухуровневые пути |
| Bearer token аутентификация | Полная | WWW-Authenticate challenge |
Helm OCI (helm push / helm pull) | Полная | Через стандартный /v2/ API |
| Кросс-репозиторный blob mount | — | Не реализовано |
| Referrers API | — | OCI 1.1 referrers не реализовано |
Глубокие пути (a/b/c/image) | — | Максимум 2 уровня |
Известные ограничения
Заголовок раздела «Известные ограничения»- Максимальная глубина пути образа — 2 уровня:
org/image:tagработает,org/sub/path/image:tagвозвращает 404. - Монолитная загрузка больших blob (>~500 МБ) может завершиться ошибкой даже при увеличенном лимите тела запроса.
- Кросс-репозиторный blob mount не поддерживается.
- Индекс Helm-репозитория (
index.yaml) не поддерживается; используйте только Helm OCI workflow.