Manage custom metadata key-value pairs on registries for organization, tagging, and filtering purposes.
Usage
hc registry metadata < subcomman d > [flags]
Available Subcommands
Subcommand Description get Retrieve metadata from a registry set Set metadata key-value pairs on a registry delete Delete metadata from a registry
Retrieve all metadata key-value pairs from a registry.
Usage
hc registry metadata get --registry < registry-nam e >
Options
Examples
hc registry metadata get --registry my-docker-reg
Output Example
$ hc registry metadata get --registry my-docker-reg
✓ Metadata fetched
Key Value
env prod
region us-east-1
team platform
owner john.doe
cost-center 1234
$ hc registry metadata get --registry new-registry
✓ Metadata fetched
No metadata found
JSON Output
hc registry metadata get --registry my-docker-reg --format json
[
{
"key" : "env" ,
"value" : "prod"
},
{
"key" : "region" ,
"value" : "us-east-1"
},
{
"key" : "team" ,
"value" : "platform"
}
]
Set or update metadata key-value pairs on a registry.
Usage
hc registry metadata set --registry < registry-nam e > --metadata "key:value,key:value"
Options
Metadata in key:value,key:value format
Examples
hc registry metadata set \
--registry my-docker-reg \
--metadata "env:prod"
hc registry metadata set \
--registry my-docker-reg \
--metadata "env:prod,region:us-east-1,team:platform"
Output Example
$ hc registry metadata set --registry my-docker-reg --metadata "env:prod,region:us"
✓ Metadata parsed
✓ Metadata updated successfully
Delete specific metadata key-value pairs from a registry.
Usage
hc registry metadata delete --registry < registry-nam e > --metadata "key:value,key:value"
Options
Metadata to delete in key:value,key:value format
Examples
hc registry metadata delete \
--registry my-docker-reg \
--metadata "env:prod"
hc registry metadata delete \
--registry my-docker-reg \
--metadata "env:prod,region:us-east-1"
Output Example
$ hc registry metadata delete --registry my-docker-reg --metadata "env:prod"
✓ Metadata parsed
✓ Metadata deleted successfully
Metadata is specified as comma-separated key-value pairs:
key1:value1,key2:value2,key3:value3
Use : to separate keys and values
Use , to separate multiple pairs
Keys and values are case-sensitive
Whitespace is preserved in values
Special characters in values should be quoted
Valid Examples
# Simple metadata
--metadata "env:prod"
# Multiple pairs
--metadata "env:prod,region:us-east"
# Values with spaces (quote the entire string)
--metadata "env:prod,description:Production Docker Registry"
# Numbers and special chars
--metadata "port:8080,version:1.0.0,owner:[email protected] "
Common Use Cases
Environment Tagging
Tag registries by environment:
Production
Staging
Development
hc registry metadata set \
--registry prod-docker \
--metadata "env:prod,tier:critical"
Team Ownership
Track which team owns each registry:
hc registry metadata set \
--registry frontend-npm \
--metadata "team:frontend,owner:[email protected] ,slack:#frontend"
hc registry metadata set \
--registry backend-maven \
--metadata "team:backend,owner:[email protected] ,slack:#backend"
Cost Allocation
Track cost centers and projects:
hc registry metadata set \
--registry project-a-docker \
--metadata "project:project-a,cost-center:1234,budget:approved"
Regional Tagging
Identify regional registries:
hc registry metadata set \
--registry us-docker \
--metadata "region:us-east-1,location:primary"
hc registry metadata set \
--registry eu-docker \
--metadata "region:eu-west-1,location:secondary"
Track compliance requirements:
hc registry metadata set \
--registry secure-registry \
--metadata "compliance:pci-dss,encryption:enabled,audit:required"
Initial Setup
Create registry :
hc registry create my-registry --package-type DOCKER
Add metadata :
hc registry metadata set \
--registry my-registry \
--metadata "env:prod,team:platform,region:us-east"
Verify metadata :
hc registry metadata get --registry my-registry
View current metadata :
hc registry metadata get --registry my-registry
Add or update tags :
hc registry metadata set \
--registry my-registry \
--metadata "tier:critical,sla:99.9"
Verify changes :
hc registry metadata get --registry my-registry
List metadata to delete :
hc registry metadata get --registry my-registry
Delete specific tags :
hc registry metadata delete \
--registry my-registry \
--metadata "old-tag:value,deprecated:true"
Batch Operations
Manage metadata across multiple registries:
#!/bin/bash
# tag-prod-registries.sh
REGISTRIES = ( "prod-docker" "prod-npm" "prod-maven" )
for registry in "${ REGISTRIES [ @ ]}" ; do
echo "Tagging $registry ..."
hc registry metadata set \
--registry " $registry " \
--metadata "env:prod,tier:critical,backup:daily"
done
Retrieve and filter metadata:
# Get all registries and their metadata
hc registry list --format json | jq '.data.registries[] | {name: .identifier}'
# Get metadata for specific registry
hc registry metadata get --registry my-registry --format json
# Filter by metadata key
hc registry metadata get --registry my-registry --format json | \
jq '.[] | select(.key == "env")'
Error Handling
Registry Not Found
not found: registry 'nonexistent' not found
Solution : Verify registry name:
Solution : Check format. Use key:value,key:value syntax.
Permission Denied
bad request: permission denied
Solution : Ensure you have write permissions for the registry.
Best Practices
Consistent Naming : Use consistent key names across registries
Use env not environment or stage
Use team not owner or group
Hierarchical Keys : Use prefixes for organization
--metadata "aws:region:us-east-1,aws:account:123456,gcp:project:my-project"
Avoid PII : Don’t store sensitive personal information
Document Metadata Schema : Maintain a standard set of tags
# metadata-schema.yaml
standard_tags :
env : [ prod , staging , dev ]
team : [ frontend , backend , platform ]
tier : [ critical , standard , basic ]
region : [ us-east-1 , eu-west-1 , ap-south-1 ]
Audit Metadata : Regularly review and clean up unused tags
# List all registries and their metadata
for reg in $( hc registry list | awk 'NR>1 {print $1}' ); do
echo "\n=== $reg ==="
hc registry metadata get --registry " $reg "
done