Package Name Format
Docker images can be specified in two formats: Official images:library namespace internally.
User/organization images:
- “ (empty string)
user/image/extra- Too many path segmentsregistry.com/user/image- Registry prefixes not supported
Name Parsing
The provider parses Docker image names to extract namespace and image name:server/providers/docker/index.ts:11-26
Configuration Options
The Docker Hub provider supports the following extra options:tags
Type: string[]Default:
["latest", "slim", "alpine"]
Specific image tags to track.
Complete Example
API Endpoints
The Docker Hub provider uses the Docker Hub v2 API:Get Repository Info
user- Repository owner usernamename- Image namenamespace- Repository namespacedescription- Short descriptionstar_count- Number of starspull_count- Total pull countis_private- Whether repository is privatelast_updated- Last update timestamp
server/providers/docker/types.ts:43-63
Get Specific Tag
name- Tag namedigest- Image digest hashlast_updated- Last update timestamptag_last_pushed- Last push timestampfull_size- Total size in bytesimages- Array of platform-specific images
server/providers/docker/types.ts:17-34
Package Output Format
The Docker Hub provider returns packages in this format: Official image:Tag Fetching Strategy
Tags are fetched individually with retry logic and error handling:server/providers/docker/index.ts:69-85
Features:
- Parallel fetching - Up to 5 tags fetched concurrently
- Retry logic - Network errors retried up to 2 times with exponential backoff
- Error isolation - Failed tags don’t prevent other tags from loading
- Digest validation - Tags without valid digests are filtered out
Release Filtering
Only valid tags are included in releases:server/providers/docker/index.ts:88-106
URL Generation
Docker Hub URLs are constructed differently for repositories and tags: Repository URL:- Repository:
https://hub.docker.com/r/library/node - Tag:
https://hub.docker.com/r/library/node/tags/latest
server/providers/docker/index.ts:9 and index.ts:104
Error Handling
Invalid Package Name
Occurs when:- Name is empty or whitespace only
- Name has invalid format (too many or too few segments)
server/providers/docker/index.ts:39 and index.ts:45
Package Not Found (404)
Occurs when:- Repository doesn’t exist
- Repository is private and not accessible
- Namespace or image name is incorrect
server/providers/docker/client.ts:42 and client.ts:84
Network Error
Occurs when:- Docker Hub API is unreachable
- Request times out
- Other HTTP errors (non-404)
server/providers/docker/client.ts:44-48
Implementation Details
Client Layer
The Docker client (DockerClient) provides three methods:
server/providers/docker/client.ts:11-28
Type Definitions
DockerTag:server/providers/docker/types.ts:17-34
DockerRepository:
server/providers/docker/types.ts:43-63
DockerImage (Platform-specific):
server/providers/docker/types.ts:3-15
Provider Info
shared/providers/docker.ts:5-16
Retry and Resilience
The Docker provider implements exponential backoff retry for network errors:- Retry count: 2 times
- Initial delay: 1 second
- Backoff multiplier: 1.5x
- Only retries: Network errors (not 404s)
server/providers/docker/index.ts:74-80
Concurrency Control
Tag fetching is limited to 5 concurrent requests to avoid overwhelming the Docker Hub API:server/providers/docker/index.ts:84
Caching
Docker Hub provider requests are cached using the standard Shipped cache:- Cache key includes: namespace, image name, and configuration hash
- Repository info and individual tags are cached separately
- Tag requests benefit from individual caching (useful when tags list changes)
Version History
Current version:1
Source: server/providers/docker/index.ts:33