Важно
{
"http": { "compat": true },
"extensions": { "sync": { "preserveDigest": false } }
}
В этом случае образы остаются в исходном формате, и подписи работают корректно.
Таблица 12.5. Режимы зеркалирования
|
Режим
|
Описание
|
Когда использовать
|
|---|---|---|
|
Полное зеркало (periodic sync)
|
Zot периодически опрашивает внешний реестр и заранее кеширует указанные образы
|
Для критически важных образов, когда требуется гарантированная доступность без задержек
|
|
Кеш по запросу (pull-through / on-demand)
|
Образ загружается из внешнего реестра только при первом запросе и кешируется локально. Последующие запросы обслуживаются из кеша
|
Для экономии места и при работе с большими реестрами (например, Docker Hub)
|
Примечание
sync) настраивается в секции extensions файла config.json.
{
"extensions": {
"sync": {
"credentialsFile": "/etc/zot/sync-auth.json",
"registries": [
{
"urls": ["https://registry.altlinux.org"],
"onDemand": true,
"pollInterval": "12h",
"tlsVerify": true,
"maxRetries": 3,
"retryDelay": "5m",
"onlySigned": false,
"preserveDigest": false,
"content": [
{
"prefix": "myapp/**",
"destination": "mirror/myapp",
"stripPrefix": true
}
]
}
]
}
}
}
Таблица 12.6. Описание параметров
|
Параметр
|
Описание
|
|---|---|
|
Уровень
sync
|
|
credentialsFile
|
Путь к файлу с учётными данными для внешних реестров
|
|
Уровень
registries[]
|
|
urls
|
Список URL внешних реестров (резервные адреса в порядке приоритета)
|
onDemand
|
true — включить кеширование по запросу; false — использовать только предварительно синхронизированные образы
|
pollInterval
|
Интервал полного опроса (например, "6h"). Если не задан — используется только on-demand
|
tlsVerify
|
Проверка TLS-сертификатов (true по умолчанию)
|
certDir
|
Каталог с доверенными сертификатами
|
maxRetries, retryDelay
|
Параметры повторных попыток при ошибках
|
syncTimeout
|
Таймаут операции синхронизации (по умолчанию — 3 часа)
|
onlySigned
|
Синхронизировать только подписанные образы (Cosign/Notary)
|
preserveDigest
|
true – попытка сохранить digest (не гарантирует работу подписей); false — конвертировать в OCI (рекомендуется для совместимости)
|
|
Уровень
content[]
|
|
urls
|
Список URL внешних реестров (резервные адреса в порядке приоритета)
|
prefix
|
Путь во внешнем реестре (поддерживает glob: *, **)
|
tags.regex
|
Фильтр тегов по регулярному выражению
|
tags.semver
|
Фильтр по semantic versioning
|
destination
|
Локальный путь для хранения образа
|
stripPrefix
|
Удалять префикс из prefix при сохранении (true → /repo/app → app)
|
credentialsFile, содержит учётные данные:
{
"registry.altlinux.org": {
"username": "zot-sync",
"password": "secret"
},
"gcr.io": {
"username": "_json_key",
"password": "{ ... }"
}
}
{
"onDemand": false,
"pollInterval": "24h",
"content": [{ "prefix": "infra/nginx" }]
}
Ежедневно синхронизирует только стабильные версии nginx.
{
"urls": ["https://registry.altlinux.org"],
"onDemand": true,
"content": [
{
"prefix": "p11/**",
"destination": "mirror/p11",
"stripPrefix": true
}]
}
Образы загружаются только при первом обращении, например:
$ podman pull 192.168.0.165:5000/mirror/p11/flannel:latest
{
"pollInterval": "12h",
"onDemand": true,
"content": [{ "prefix": "**" }]
}
После полной синхронизации можно перенаправить трафик на новый Zot.