An open API service indexing awesome lists of open source software.

https://github.com/ramborogers/cyberdock

Beautiful Docker Repository with Garbage Collection
https://github.com/ramborogers/cyberdock

docker go golang registry

Last synced: 9 months ago
JSON representation

Beautiful Docker Repository with Garbage Collection

Awesome Lists containing this project

README

          



screenshot


charts


CyberDock


Cyberpunk Docker Registry Interface


🐳 Docker Registry | 🌍 Web UI | ⚡ Fast | 🎨 Beautiful | 🔒 Secure



Version 0.3.2d
Go Version
Platform Support
License


CyberDock is a sleek, cyberpunk-themed Docker Registry with an integrated web interface. It combines a fully compliant OCI Distribution registry with a beautiful, real-time UI for managing your container images.

> The intention is to provide a simple, secure, and efficient way to replay and manage your Docker images.

## 🌟 Features


Registry Features
Content Support




  • Full OCI Distribution Specification compliance

  • Local filesystem storage with deduplication

  • Efficient blob mounting between repositories

  • Atomic operations for data integrity

  • Automatic cleanup of incomplete uploads

  • Real-time storage statistics

  • Built-in garbage collection





  • Docker V2 manifests and lists

  • OCI manifests and image indexes

  • Container configs

  • Layer tarballs

  • Cross-repository blob mounting

  • Range request support

  • 🎉v0.2.0:Garbage collection





Web Interface
Security




  • Cyberpunk-themed responsive design

  • Real-time statistics and monitoring

  • Image and tag management

  • Storage efficiency tracking

  • Layer analysis and visualization

  • Search and filtering capabilities

  • Secure HTTPS access





  • Automatic TLS certificate generation

  • Content verification through digests

  • Proper file permissions

  • Safe concurrent access

  • Secure temporary file handling



## 🚀 Quick Start

### Docker

Docker image is a simple way to get started.

#### Single-Port Mode (Recommended)
```bash
# Run on port 5000 (both registry and UI)
docker run -d --name cyberdock -p 5000:5000 mattrogers/cyberdock:latest
```

Access points:
- Registry API: https://localhost:5000/v2/
- Admin UI: https://localhost:5000/admin/
- Root (/) redirects to /admin/

#### Legacy Dual-Port Mode
```bash
# Run with separate ports
docker run -d --name cyberdock -p 5000:5000 -p 5001:5001 mattrogers/cyberdock:latest -r 5000 -g 5001
```

Access points:
- Registry: https://localhost:5000
- Web UI: https://localhost:5001

If you have a mac 🍏 host and want to work around the port conflicts:
```bash
# Single-port mode on custom port
docker run -d --name cyberdock -p 5005:5000 mattrogers/cyberdock:latest
# Access at https://localhost:5005/admin/

# Or dual-port mode
docker run -d --name cyberdock -p 5005:5000 -p 5006:5001 mattrogers/cyberdock:latest -r 5000 -g 5001
# Registry: https://localhost:5005
# Web UI: https://localhost:5006
```

## 💻 Usage

### Single-Port Mode (Default)
CyberDock now runs both the registry and admin UI on a single port by default, simplifying deployment:
```bash
./cyberdock -p 5000
```

Path-based routing:
- `/v2/*` - Docker Registry API (for docker push/pull)
- `/admin/*` - Web UI for managing the registry
- `/api/*` - Management API endpoints
- `/static/*` - Static assets for the UI
- `/` - Redirects to `/admin/`

### Legacy Dual-Port Mode
For backward compatibility, you can still run with separate ports:
```bash
./cyberdock -r 5000 -g 5001
```
- Registry server on port 5000
- Web UI server on port 5001

Remote Purge ☢️
```bash
curl -k -X POST https://cyberdock:5001/api/purge
```

### Docker Client Configuration

The Docker client works seamlessly with both single-port and dual-port modes.

Add to your Docker daemon configuration:
```json
{
"insecure-registries": ["localhost:5000"]
}
```

### Push Images
```bash
docker tag your-image:tag localhost:5000/your-image:tag
docker push localhost:5000/your-image:tag
```

### Pull Images
```bash
docker pull localhost:5000/your-image:tag
```

## 🔧 Configuration

Command line flags:
```bash
# Single-port mode (default)
-p PORT # Run both registry and UI on single port (default: 5000)

# Dual-port mode (legacy)
-r PORT # Set registry port (default: 5000)
-g PORT # Set web UI port (default: 5001)
```

Note: When both `-r` and `-g` are specified, CyberDock automatically switches to dual-port mode for backward compatibility.

## ⚡️ Updates

- 0.3.2d:
- Added single-port mode as default deployment option
- Fixed /admin routing in single-port mode
- Simplified deployment with path-based routing
- Added certificate management UI (upload custom certs or generate new ones)
- Maintained backward compatibility with dual-port mode

- 0.3.1d:
- Added project group and name to the UI (issue #3)

- 0.3.0d:
- Added storage efficiency analysis
- Added image density metric
- Added repository health metric
- Added total layers and average layers per image metrics
- Added layer distribution chart
- Bugfixes for dashes and long names


screenshot
charts

## ⚖️ License


CyberDock is licensed under the GNU General Public License v3.0 (GPLv3).

Free Software

[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg?style=for-the-badge)](https://www.gnu.org/licenses/gpl-3.0)

### Connect With Me 🤝

[![GitHub](https://img.shields.io/badge/GitHub-RamboRogers-181717?style=for-the-badge&logo=github)](https://github.com/RamboRogers)
[![Twitter](https://img.shields.io/badge/Twitter-@rogerscissp-1DA1F2?style=for-the-badge&logo=twitter)](https://x.com/rogerscissp)
[![Website](https://img.shields.io/badge/Web-matthewrogers.org-00ADD8?style=for-the-badge&logo=google-chrome)](https://matthewrogers.org)