Skopeo
Skopeo for remote image inspection, cross-registry copying, and repository synchronization.
Inspect Remote Images
Inspect without pulling
skopeo inspect docker://docker.io/library/nginx:1.25-alpine
skopeo inspect docker://docker.io/library/nginx:1.25-alpine | jq '.Digest'
skopeo inspect --raw docker://docker.io/library/nginx:latest | jq # manifest
| Skopeo inspects registries directly without downloading the full image. Useful for checking tags, digests, and architecture support before pulling. |
List available tags
skopeo list-tags docker://docker.io/library/nginx
skopeo list-tags docker://docker.io/library/nginx | jq '.Tags[]' | sort -V | tail -20
Copy Images Between Registries
Mirror an image across registries
skopeo copy docker://docker.io/library/nginx:1.25-alpine \
docker://registry.example.com/nginx:1.25-alpine
Copy to local OCI directory or archive
skopeo copy docker://docker.io/library/nginx:1.25-alpine oci:nginx-local:latest
skopeo copy docker://docker.io/library/nginx:1.25-alpine docker-archive:nginx.tar
Copy from archive to registry
skopeo copy docker-archive:nginx.tar docker://registry.example.com/nginx:latest
Authentication
Login to a registry
skopeo login registry.example.com
skopeo login --username user --password-stdin registry.example.com < /dev/stdin
skopeo logout registry.example.com
Delete Remote Images
Remove image from registry
skopeo delete docker://registry.example.com/myapp:old-tag
| Not all registries support deletion via the API. Docker Hub, for example, requires using the web UI or Hub API. |
Sync
Sync an entire repository
skopeo sync --src docker --dest dir docker.io/library/nginx /tmp/nginx-mirror/
skopeo sync --src dir --dest docker /tmp/nginx-mirror/ registry.example.com/