Key Concepts
Registry
A container image storage service identified by its URL (e.g., ghcr.io, docker.io).
Credentials
Username and password/token used to authenticate with the registry.
Push
Upload built container images to the registry during CI/CD pipelines.
Pull
Download base images from private registries during container builds.
Required Permissions
| Action | Permission |
|---|---|
| View registries | iam:project:cicd:registry:read |
| Create registries | iam:project:cicd:registry:write |
| Edit registries | iam:project:cicd:registry:write |
| Delete registries | iam:project:cicd:registry:delete |
Common Registries
| Registry | URL | Username |
|---|---|---|
| Docker Hub | docker.io or index.docker.io | Docker Hub username |
| GitHub Container Registry | ghcr.io | GitHub username |
| GitLab Container Registry | registry.gitlab.com | GitLab username |
| Google Container Registry | gcr.io | _json_key |
| Amazon ECR | <account>.dkr.ecr.<region>.amazonaws.com | AWS |
| Azure Container Registry | <name>.azurecr.io | Service principal ID |
How to Add a Registry
Registry URL cannot be changed after creation. To use a different URL, delete and recreate the registry entry.
How to Edit a Registry
How to Delete a Registry
Registry-Specific Configuration
Docker Hub
| Field | Value |
|---|---|
| Registry URL | docker.io or index.docker.io |
| Username | Your Docker Hub username |
| Password | Docker Hub access token (recommended) or password |
GitHub Container Registry (ghcr.io)
| Field | Value |
|---|---|
| Registry URL | ghcr.io |
| Username | Your GitHub username |
| Password | Personal access token with write:packages scope |
GitLab Container Registry
| Field | Value |
|---|---|
| Registry URL | registry.gitlab.com |
| Username | Your GitLab username |
| Password | Personal access token with read_registry and write_registry scopes |
Google Container Registry (GCR)
| Field | Value |
|---|---|
| Registry URL | gcr.io, us.gcr.io, eu.gcr.io, or asia.gcr.io |
| Username | _json_key |
| Password | Service account JSON key (entire file contents) |
Amazon ECR
| Field | Value |
|---|---|
| Registry URL | <account-id>.dkr.ecr.<region>.amazonaws.com |
| Username | AWS |
| Password | ECR authorization token (expires every 12 hours) |
Azure Container Registry
| Field | Value |
|---|---|
| Registry URL | <registry-name>.azurecr.io |
| Username | Service principal application ID or admin username |
| Password | Service principal password or admin password |
Private/Self-Hosted Registries
| Field | Value |
|---|---|
| Registry URL | Your registry hostname (e.g., registry.example.com:5000) |
| Username | Registry username |
| Password | Registry password |
Troubleshooting
Authentication failed
Authentication failed
- Verify username is correct
- Check if password/token has expired
- Ensure token has required permissions (push/pull)
- For Docker Hub, use access token instead of password
Cannot push images
Cannot push images
- Verify registry credentials have write access
- Check if the repository exists (some registries require pre-creation)
- Ensure image tag follows registry naming conventions
- Verify network connectivity to the registry
Cannot pull images
Cannot pull images
- Verify credentials have read access
- Check if the image exists in the registry
- Ensure the image tag is correct
- For private images, verify authentication is working
Registry URL not recognized
Registry URL not recognized
- Use the correct hostname format
- For Docker Hub, use
docker.ionothub.docker.com - Include port number if using non-standard ports
- Ensure HTTPS is supported by the registry
Token expired
Token expired
- Edit the registry and enter a new password/token
- For ECR, regenerate the authorization token
- Check token expiration policies for your registry
Cannot delete registry
Cannot delete registry
- Verify you have delete permission
- Check if pipelines are actively using the registry
- Try refreshing the page
FAQ
Can I use the same credentials for multiple registries?
Can I use the same credentials for multiple registries?
No. Each registry URL requires its own credential entry. Even if the same username/password works, you need separate entries for each registry hostname.
Are passwords encrypted?
Are passwords encrypted?
Yes. All passwords and tokens are encrypted at rest in the database. They are decrypted only when needed for registry operations.
How do I rotate registry credentials?
How do I rotate registry credentials?
Edit the registry entry and enter the new password. The old password is replaced immediately. Ensure all pipelines complete before rotating.
Can I use SSH keys for registry authentication?
Can I use SSH keys for registry authentication?
No. Container registries use username/password or token-based authentication. SSH keys are not supported for registry access.
Why is Docker Hub requiring an access token?
Why is Docker Hub requiring an access token?
Docker Hub now requires access tokens for automated systems. Create a token at Docker Hub → Account Settings → Security → Access Tokens.
How do I handle ECR token expiration?
How do I handle ECR token expiration?
ECR tokens expire every 12 hours. For CI/CD pipelines, use AWS credential helpers or generate tokens dynamically in your pipeline scripts.
What if my registry uses a self-signed certificate?
What if my registry uses a self-signed certificate?
Self-signed certificates may require additional pipeline configuration. Contact your administrator to configure trust for your registry’s CA.
Can I use robot accounts or service accounts?
Can I use robot accounts or service accounts?
Yes. Many registries support robot accounts (Harbor, Quay) or service accounts (GCR, ACR) for CI/CD. These are recommended over personal accounts.
Best Practices
Security
- Use access tokens instead of passwords when available
- Create dedicated CI/CD accounts or robot accounts
- Use tokens with minimum required permissions (read-only where possible)
- Rotate credentials regularly
- Never share registry credentials between environments
Organization
- Use descriptive names for easy identification
- Document which pipelines use each registry
- Keep credentials updated when team members change
- Remove unused registry entries
Token Management
- Set calendar reminders for token rotation
- Use long-lived tokens for CI/CD where supported
- Test authentication after credential rotation
- Monitor for authentication failures in pipeline logs
Multi-Registry Setup
For organizations using multiple registries:- Different access levels per registry
- Separation of public and private images
- Independent credential rotation schedules