Problem
Design a container image registry (Docker Hub-style) that stores and serves image layers.
Requirements
Functional:
- Push/pull images by name:tag
- Content-addressed layer storage with dedup
- Manifest resolution
- Auth and rate limiting
Non-functional:
- Millions of pulls/day, large layers
- Dedup to save storage
- Global low-latency pulls
Discussion points
- Content-addressed (digest) layer storage + dedup
- Manifest and tag resolution
- CDN for layer distribution
- Auth, quotas, and rate limiting
- Garbage collection of unreferenced layers