Docker Registry vs CyanPrint Registry
Understanding where to publish templates
Docker Registry vs CyanPrint Registry
CyanPrint uses two types of registries: Docker registries for images and CyanPrint registry for metadata.
Overview
| Registry | Purpose | Examples |
|---|---|---|
| Docker Registry | Store template and blob images | Docker Hub, GHCR, private |
| CyanPrint Registry | Store template metadata | CyanPrint Cloud, private |
Docker Registry
Docker registries store the actual template images.
What's Stored
- Template Image - Contains template logic
- Blob Image - Contains template files
Common Options
Docker Hub
docker logindocker buildx build -t docker.io/myorg/my-template:1.0.0 --push .
- Free for public repos
- Paid for private repos
- Widely accessible
GitHub Container Registry (GHCR)
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdindocker buildx build -t ghcr.io/myorg/my-template:1.0.0 --push .
- Free with GitHub account
- Integrated with GitHub Actions
- Good for open source
Private Registry
docker login registry.example.comdocker buildx build -t registry.example.com/myorg/my-template:1.0.0 --push .
- Full control
- Behind firewall option
- Self-hosted
CyanPrint Registry
CyanPrint registry stores metadata about templates.
What's Stored
- Template metadata - Name, version, description
- Image references - Links to Docker images
- Composition info - Template dependencies
- Search index - For template discovery
Registration
cyanprint push template --token $CYAN_TOKEN \myorg/my-template-blob 1.0.0 \myorg/my-template 1.0.0
This registers:
- Template name and version
- Blob image reference
- Template image reference
Benefits
- Discovery - Search for templates
- Resolution - Find template by name
- Versioning - Track template versions
- Composition - Resolve dependencies
How They Work Together
Workflow
Build and Push Images
Build images and push to Docker registry:
docker buildx build --platform linux/amd64,linux/arm64 \-f cyan/template.Dockerfile \-t docker.io/myorg/my-template:1.0.0 \--push .docker buildx build --platform linux/amd64,linux/arm64 \-f cyan/blob.Dockerfile \-t docker.io/myorg/my-template-blob:1.0.0 \--push .
Register with CyanPrint
Register with CyanPrint registry:
cyanprint push template --token $CYAN_TOKEN \docker.io/myorg/my-template-blob 1.0.0 \docker.io/myorg/my-template 1.0.0
Using
# User searchescyanprint search nodejs# User createscyanprint create myorg/node-template:1.0.0 ./my-project
Registry Options
CyanPrint Cloud
Official CyanPrint registry:
registry.cyanprint.io- Managed service
- Integrated with CLI
Private CyanPrint Registry
Self-hosted option:
- Full control
- Behind firewall
- Custom authentication
For internal templates, you can use only Docker registry with direct image references, bypassing CyanPrint registry.
Direct Docker Usage
Use templates without CyanPrint registry:
# Direct image referencecyanprint create docker.io/myorg/my-template:1.0.0 ./my-project# With registry prefixcyanprint create ghcr.io/myorg/my-template:1.0.0 ./my-project
This works but loses:
- Template discovery
- Version management
- Composition resolution