LogoCyanPrint

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

RegistryPurposeExamples
Docker RegistryStore template and blob imagesDocker Hub, GHCR, private
CyanPrint RegistryStore template metadataCyanPrint Cloud, private

Docker Registry

Docker registries store the actual template images.

What's Stored

  1. Template Image - Contains template logic
  2. Blob Image - Contains template files

Common Options

Docker Hub

docker login
docker 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-stdin
docker 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.com
docker 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

  1. Template metadata - Name, version, description
  2. Image references - Links to Docker images
  3. Composition info - Template dependencies
  4. 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 searches
cyanprint search nodejs
# User creates
cyanprint 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 reference
cyanprint create docker.io/myorg/my-template:1.0.0 ./my-project
# With registry prefix
cyanprint create ghcr.io/myorg/my-template:1.0.0 ./my-project

This works but loses:

  • Template discovery
  • Version management
  • Composition resolution