Testing Guide
Full Feature Testing with Multi-Registry Setup
Test all features of Docker Registry UI with a realistic multi-registry environment populated with real images.
Quick Setup
Download the required files and start testing in minutes:
Step 1: Download Files
# Create a test directory
mkdir docker-registry-ui-test
cd docker-registry-ui-test
# Download multi-registry compose file
wget https://raw.githubusercontent.com/VibhuviOiO/docker-registry-ui/refs/heads/main/docker/docker-compose-multi-registry.yml
# Download test image population script
wget https://raw.githubusercontent.com/VibhuviOiO/docker-registry-ui/refs/heads/main/docker/populate-test-images.sh
# Make script executable
chmod +x populate-test-images.sh
Step 2: Start Multi-Registry Environment
# Start two registries and the UI
docker-compose -f docker-compose-multi-registry.yml up -d
# Wait for services to be ready (about 10 seconds)
sleep 10
Step 3: Populate with Test Images
# Run the population script
./populate-test-images.sh
# This will:
# - Pull popular images (alpine, nginx, redis, postgres, node, python, etc.)
# - Push them to both test registries
# - Create ~40+ images in Registry 1
# - Create ~10+ images in Registry 2
# - Takes about 5-10 minutes depending on your internet speed
Step 4: Access the UI
# Open in your browser
http://localhost:5003
What Gets Created
Registry 1 (localhost:5001)
alpine: 3.18, 3.17, 3.16, latest
nginx: 1.25, 1.24, 1.23, alpine, latest
redis: 7.2, 7.0, 6.2, alpine, latest
postgres: 16, 15, 14, 13, alpine
node: 20, 18, 16, 20-alpine, 18-alpine
python: 3.11, 3.10, 3.9, 3.11-slim, 3.10-alpine
busybox: 1.36, 1.35, latest, musl
ubuntu: 22.04, 20.04, 18.04, latest
mysql: 8.0, 5.7, latest
mongo: 7.0, 6.0, 5.0, latest
myapp/service-1,2,3: v1.0.0, v1.1.0, latest
Registry 2 (localhost:5002)
alpine: 3.18, latest
nginx: 1.25, alpine
redis: 7.2, alpine
postgres: 16, alpine
node: 20, 20-alpine
Features to Test
1. Multi-Registry Management
Switch between Registry 1 and Registry 2 using dropdown
View different image sets in each registry
Configure registry settings
2. Repository Browsing
Browse all repositories
Search for specific repositories
View repository details and statistics
3. Tag Management
View all tags for each repository
See tag sizes and creation dates
View layer information
Delete individual tags
4. Vulnerability Scanning
Scan any image tag for vulnerabilities
View CVE details with severity levels
Filter vulnerabilities by severity
See which layer introduced each vulnerability
5. Bulk Operations
Delete multiple tags by pattern (e.g.,
*-alpine)
Age-based cleanup (e.g., older than 30 days)
Retention policies (keep last N tags)
Dry run mode to preview deletions
6. Analytics
View storage usage by repository
See tag distribution
Analyze disk usage patterns
Test Scenarios
Scenario 1: Clean Up Old Alpine Versions
1. Navigate to Bulk Operations
2. Repository pattern: alpine
3. Tag pattern: 3.*
4. Keep minimum: 2
5. Enable dry run
6. Review what would be deleted
7. Execute deletion
Scenario 2: Scan for Vulnerabilities
1. Navigate to nginx repository
2. Click "Scan" on nginx:latest
3. Wait for scan to complete
4. View vulnerability badges
5. Click badge to see CVE details
6. Filter by severity (Critical, High)
7. Click CVE ID to view in NVD
Scenario 3: Layer Inspection
1. Navigate to postgres repository
2. Click on postgres:16 tag
3. Click "View Layers"
4. See layer sizes and commands
5. View vulnerability counts per layer
Cleanup
When done testing, clean up everything:
# Stop and remove all containers
docker-compose -f docker-compose-multi-registry.yml down -v
# Remove downloaded images (optional)
docker image prune -a
Troubleshooting
Script Fails to Pull Images
Check internet connectivity
Verify Docker Hub is accessible
Try running script again (it will skip already pulled images)
UI Not Accessible
Check if containers are running:
docker ps
Check logs:
docker-compose logs registry-ui
Verify port 5003 is not in use
Registries Not Showing Images
Ensure populate script completed successfully
Check registry logs:
docker-compose logs registry-1
Verify images were pushed:
curl http://localhost:5001/v2/_catalog
Advanced Testing
Custom Test Images
Add your own test images:
# Tag and push custom image
docker tag myapp:latest localhost:5001/myapp:v1.0.0
docker push localhost:5001/myapp:v1.0.0
Test with Authentication
Modify docker-compose-multi-registry.yml to add basic auth to registries and test authentication flow.
Automated Testing
Note: This project currently does not have automated test coverage. Contributions for unit and integration tests are welcome!