Перейти к содержимому

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.

NORA может выступать в роли pull-through кеша для Docker Hub и других реестров. Если образ не найден локально, NORA загружает его из настроенных upstream-источников.

config.toml:

[docker]
enabled = true
proxy_timeout = 60
[[docker.upstreams]]
url = "https://registry-1.docker.io"
[[docker.upstreams]]
url = "https://ghcr.io"
auth = "user:token" # опциональная базовая аутентификация

Переменные окружения:

ПеременнаяОписаниеПо умолчанию
NORA_DOCKER_ENABLEDВключить реестр Dockertrue
NORA_DOCKER_PROXIESUpstream 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 APIOCI 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.