Skopeo — утилита для работы с образами контейнеров и реестрами без запуска Docker-демона и без полной загрузки образа на диск. Входит в Red Hat container tools вместе с Podman и Buildah. Skopeo работает напрямую с API реестров (Docker Hub, Quay.io, AWS ECR, GCR, Nexus) через транспортный протокол container image specification.
Основные возможности
- Инспекция образа: метаданные без загрузки — размер, теги, манифест, история слоёв
- Копирование между реестрами: прямая передача без промежуточного скачивания на диск
- Удаление тегов: из удалённых реестров через API
- Синхронизация реестров: mirroring корпоративного реестра
- Подпись образов: верификация через GPG-подписи и cosign
Основные команды
# Инспекция образа без загрузки
skopeo inspect docker://nginx:latest
# Копирование между реестрами
skopeo copy docker://nginx:latest docker://myregistry.internal/nginx:latest
# Копирование в/из tar-архива
skopeo copy docker://nginx:latest oci-archive:/tmp/nginx.tar
# Удалить тег в реестре
skopeo delete docker://myregistry.internal/nginx:old-tag
# Синхронизировать реестр
skopeo sync --src docker --dest docker docker.io/library/nginx myregistry.internal/mirrors
# Авторизация (credentials)
skopeo login myregistry.internal -u user -p password
История
Skopeo создан командой Red Hat в 2016 году как часть Project Atomic — инициативы по созданию container-native Linux. Опубликован под Apache 2.0 лицензией. Вошёл в состав Red Hat Enterprise Linux 8 (2019) вместе с Podman и Buildah как замена Docker в корпоративных сценариях. В 2020 году стал частью проекта containers/skopeo в GitHub организации containers.
Skopeo vs Docker pull/push
| Параметр | Skopeo | Docker pull/push |
|---|---|---|
| Daemon | Не нужен | Обязателен (dockerd) |
| Root | Не нужен (rootless) | Нужен (или sudo) |
| Кэш на диске | Нет (прямая передача) | Да (Layer cache) |
| Multi-arch копирование | Да | Частично |
| CI/CD применение | Эффективно | Медленнее |
На что обращать внимание
Skopeo особенно полезен в CI/CD пайплайнах без Docker-демона: копирование образа между реестрами прямым путём быстрее, чем docker pull → docker tag → docker push (экономит время и дисковое пространство). При использовании в Kubernetes-кластере: Skopeo помогает pre-pull образы в корпоративный registry перед деплоем. Для верификации подписей образов используй совместно с cosign (Sigstore проект).
История Skopeo
Skopeo создан командой Red Hat в 2015–2016 годах как часть проекта «container tools» для замены зависимости от Docker daemon при работе с реестрами. Версия 0.1.0 выпущена в 2016 году. Вместе с Podman и Buildah входит в «Red Hat container tools trinity» — полный стек работы с контейнерами без Docker. Fedora 30 (2019) включила Skopeo в стандартные репозитории. Skopeo написан на Go, лицензия Apache 2.0.
Практические примеры Skopeo
# Скопировать образ между реестрами без загрузки на диск
skopeo copy docker://docker.io/nginx:latest docker://registry.example.com/nginx:latest
# Проверить манифест образа без загрузки
skopeo inspect docker://nginx:latest
# Синхронизировать все теги образа
skopeo sync --src docker --dest docker docker.io/library/nginx registry.example.com/mirror
# Удалить тег из реестра
skopeo delete docker://registry.example.com/myapp:old-tag
На что обращать внимание
Skopeo — незаменим в airgapped (изолированных) средах: копирует образы из публичного реестра в корпоративный без запуска Docker. В CI/CD на GitLab CI или GitHub Actions Skopeo используется для зеркалирования образов перед сборкой. Команда skopeo inspect позволяет проверить digest и метаданные без docker pull. Для верификации подписей образов используй совместно с cosign (Sigstore). Skopeo поддерживает аутентификацию через --creds user:pass или через ~/.docker/config.json.