202 lines
5.3 KiB
Markdown
202 lines
5.3 KiB
Markdown
# Docker Registry Browser - Production Deployment
|
|
|
|
A modern, responsive web interface for browsing Docker registries with support for both Docker v2 and OCI manifest formats.
|
|
|
|
## Features
|
|
|
|
- Browse repositories and tags
|
|
- View detailed image information (layers, environment, labels, etc.)
|
|
- Copy docker pull commands
|
|
- Push command generator with examples
|
|
- Dark/Light mode toggle
|
|
- Fully responsive design
|
|
- Support for OCI and Docker v2 manifests
|
|
- Multi-platform image support
|
|
|
|
## Quick Start
|
|
|
|
### Option 1: Docker Run
|
|
|
|
```bash
|
|
docker run -d \
|
|
--name docker-registry-browser \
|
|
-p 8080:80 \
|
|
--add-host=host.docker.internal:host-gateway \
|
|
-e REGISTRY_HOST=localhost:5000 \
|
|
-e REGISTRY_PROTOCOL=http \
|
|
your-dockerhub-username/docker-registry-browser:latest
|
|
```
|
|
|
|
### Option 2: Docker Compose
|
|
|
|
```bash
|
|
git clone https://github.com/your-username/docker-registry-browser.git
|
|
cd docker-registry-browser
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Option 3: Build from Source
|
|
|
|
```bash
|
|
git clone https://github.com/your-username/docker-registry-browser.git
|
|
cd docker-registry-browser
|
|
docker build -t docker-registry-browser .
|
|
docker run -d -p 8080:80 --add-host=host.docker.internal:host-gateway docker-registry-browser
|
|
```
|
|
|
|
## Unraid Installation
|
|
|
|
### Method 1: Community Applications (Recommended)
|
|
|
|
1. In Unraid, go to **Apps** tab
|
|
2. Search for "Docker Registry Browser"
|
|
3. Click **Install**
|
|
4. Configure the settings and click **Apply**
|
|
|
|
### Method 2: Manual Template
|
|
|
|
1. In Unraid, go to **Docker** tab
|
|
2. Click **Add Container**
|
|
3. Set **Template** to the template URL or upload the XML template
|
|
4. Configure the required settings
|
|
5. Click **Apply**
|
|
|
|
### Method 3: Docker Compose (Unraid 6.12+)
|
|
|
|
1. Install the "Compose Manager" plugin
|
|
2. Create a new compose stack with the provided `docker-compose.yml`
|
|
3. Deploy the stack
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `REGISTRY_HOST` | `localhost:5000` | Docker registry hostname and port |
|
|
| `REGISTRY_PROTOCOL` | `http` | Protocol (http/https) |
|
|
| `REGISTRY_USERNAME` | - | Registry username (optional) |
|
|
| `REGISTRY_PASSWORD` | - | Registry password (optional) |
|
|
|
|
### Unraid Configuration
|
|
|
|
| Setting | Default | Description |
|
|
|---------|---------|-------------|
|
|
| **WebUI Port** | `8080` | Port for web interface |
|
|
| **Registry Host** | `localhost:5000` | Your registry address |
|
|
| **Registry Protocol** | `http` | http or https |
|
|
| **Registry Username** | - | Optional authentication |
|
|
| **Registry Password** | - | Optional authentication |
|
|
|
|
## Usage
|
|
|
|
1. Access the web interface at `http://your-server:8080`
|
|
2. Browse repositories on the left panel
|
|
3. Select a repository to view its tags
|
|
4. Click the info button to view detailed image information
|
|
5. Use the menu for push commands and settings
|
|
6. Toggle dark/light mode using the theme button in the toolbar
|
|
|
|
## Features Guide
|
|
|
|
### Dark Mode
|
|
- Toggle between light and dark themes using the moon/sun icon in the toolbar
|
|
- Theme preference is saved locally and persists between sessions
|
|
- All UI components are properly themed for optimal visibility in both modes
|
|
|
|
### Browsing Images
|
|
- Repository list shows all available repositories
|
|
- Click a repository to load its tags
|
|
- Search repositories using the search field
|
|
- View tag details by clicking the info button
|
|
|
|
### Push Commands
|
|
- Access via the menu (three dots) in the toolbar
|
|
- Get step-by-step instructions for pushing images
|
|
- Copy commands to clipboard
|
|
- Includes multi-architecture build instructions
|
|
|
|
### Image Details
|
|
- View comprehensive image information
|
|
- See layer details, environment variables, labels
|
|
- Check image size, architecture, and creation date
|
|
- Inspect exposed ports and volumes
|
|
|
|
## Troubleshooting
|
|
|
|
### Registry Connection Issues
|
|
|
|
**Problem**: Cannot connect to registry
|
|
**Solution**:
|
|
1. Verify `REGISTRY_HOST` is correct
|
|
2. Check if registry is accessible from container
|
|
3. For local registries, ensure `--add-host=host.docker.internal:host-gateway` is set
|
|
|
|
### CORS Issues
|
|
|
|
**Problem**: API requests blocked by CORS
|
|
**Solution**: The nginx configuration includes CORS headers, but ensure your registry allows cross-origin requests
|
|
|
|
### Authentication Issues
|
|
|
|
**Problem**: 401 Unauthorized errors
|
|
**Solution**: Set `REGISTRY_USERNAME` and `REGISTRY_PASSWORD` environment variables
|
|
|
|
### Manifest Issues
|
|
|
|
**Problem**: "OCI index found" errors
|
|
**Solution**: This should be resolved in the current version which supports OCI manifests
|
|
|
|
## Development
|
|
|
|
### Building
|
|
|
|
```bash
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Development server
|
|
npm start
|
|
|
|
# Build for production
|
|
npm run build
|
|
|
|
# Build Docker image
|
|
docker build -t docker-registry-browser .
|
|
```
|
|
|
|
### Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Make your changes
|
|
4. Test thoroughly
|
|
5. Submit a pull request
|
|
|
|
## Health Check
|
|
|
|
The container includes a health check endpoint at `/health` that returns:
|
|
- `200 OK` with "healthy" response when running properly
|
|
- Checks every 30 seconds with 3 retries
|
|
|
|
## Security
|
|
|
|
- Runs as non-root user (nginx:nginx)
|
|
- Includes security headers
|
|
- No sensitive data stored in container
|
|
- Registry credentials passed via environment variables
|
|
|
|
## License
|
|
|
|
MIT License - see LICENSE file for details.
|
|
|
|
## Changelog
|
|
|
|
### v1.0.0
|
|
- Initial release
|
|
- Support for Docker v2 and OCI manifests
|
|
- Responsive design
|
|
- Push command generation
|
|
- Dark/Light mode
|
|
- Multi-platform image support
|