
Docker Registry einfach selbst hosten
Yulei ChenDie Docker Registry (auch bekannt als Distribution) ist die Open-Source-Engine hinter Docker Hub, GitHub Container Registry und den meisten anderen Container Registries. Deine eigene Registry gibt dir volle Kontrolle darüber, wo deine Images liegen - ohne Pull-Rate-Limits und ohne Kosten pro Image. Docker Hubs kostenloser Plan erlaubt nur ein privates Repository, und die Bezahlpläne starten bei $7/Monat mit Storage-Limits.
Sliplane ist eine Managed Container Platform, die Self-Hosting einfach macht. Mit One-Click Deployment bekommst du eine private Docker Registry in Minuten zum Laufen - kein Server-Setup, keine Reverse-Proxy-Konfiguration, keine Infrastruktur zum Verwalten.
Voraussetzungen
Vor dem Deployment brauchst du einen Sliplane Account (Free Trial verfügbar).
Schnellstart
Sliplane bietet One-Click Deployment mit Presets.
- Klick auf den Deploy-Button oben
- Wähl ein Projekt aus
- Wähl einen Server aus (wenn du dich gerade angemeldet hast, bekommst du einen 48-Stunden Free Trial Server)
- Klick auf Deploy!
Was das Preset enthält
Das One-Click Deployment nutzt Sliplane's Docker Registry Preset. Das ist dabei:
- Offizielles registry Image (
registry:3.1.1) basierend auf Distribution v3 - Spezifischer Version Tag für Stabilität
- Persistenter Storage gemountet auf
/var/lib/registry, damit deine Images Neustarts überleben - Healthcheck auf
/v2/(der Registry API Base Path) - Keine Authentifizierung standardmäßig (weiter unten steht, wie du sie hinzufügst)
Nächste Schritte
Sobald die Registry auf Sliplane läuft, erreichst du sie über die Domain, die Sliplane dir zugewiesen hat (z.B. docker-registry-xxxx.sliplane.app).
Dein erstes Image pushen
Tagge ein lokales Image mit der Domain deiner Registry und pushe es:
docker tag my-app:latest docker-registry-xxxx.sliplane.app/my-app:latest
docker push docker-registry-xxxx.sliplane.app/my-app:latest
Um das Image auf einem anderen Rechner zu pullen:
docker pull docker-registry-xxxx.sliplane.app/my-app:latest
Mehr Details zum Taggen und Pushen findest du in unseren Guides zu docker tag und docker push.
Authentifizierung hinzufügen
Das Preset deployed ohne Authentifizierung. Für den Produktionseinsatz solltest du Basic Auth einrichten. Das geht über Environment Variables in Sliplane und einen eigenen Start-Command.
Füg diese Environment Variables in deinen Service Settings hinzu:
| Variable | Wert |
|---|---|
USERNAME | admin (oder dein bevorzugter Username) |
PASSWORD | Ein starkes Passwort |
REGISTRY_AUTH | htpasswd |
REGISTRY_AUTH_HTPASSWD_REALM | Registry Realm |
REGISTRY_AUTH_HTPASSWD_PATH | /auth/registry.password |
Dann setz das Command-Feld auf:
sh -c 'apk add --no-cache apache2-utils && mkdir -p /auth && htpasswd -Bbc /auth/registry.password "$USERNAME" "$PASSWORD" && registry serve /etc/docker/registry/config.yml'
Das installiert das htpasswd-Tool, generiert die Passwort-Datei und startet die Registry. Nach dem Redeploy musst du dich einloggen, bevor du pushen kannst:
docker login docker-registry-xxxx.sliplane.app
Storage
Alle gepushten Images werden in /var/lib/registry gespeichert, das durch ein persistentes Volume gesichert ist. Deine Images sind also auch bei Container-Neustarts sicher. Wie viel Speicher deine Images belegen, siehst du im Sliplane Dashboard unter dem Volume-Bereich deines Servers.
Garbage Collection
Mit der Zeit können gelöschte Image Tags ungenutzte Layer (Blobs) auf der Disk hinterlassen. Die Registry hat einen eingebauten Garbage Collector. Du kannst ihn per docker exec starten:
registry garbage-collect /etc/docker/registry/config.yml
Logging
Die Registry loggt standardmäßig nach STDOUT, was super mit Sliplane's integriertem Log Viewer funktioniert. Du kannst das Log-Level über die Environment Variable REGISTRY_LOG_LEVEL anpassen (debug, info, warn oder error). Allgemeine Docker-Log-Tipps findest du in unserem Post zu Docker Logs.
Kostenvergleich
Du kannst eine Docker Registry auch bei anderen Cloud-Anbietern self-hosten. Hier ein Preisvergleich der gängigsten Anbieter:
| Anbieter | vCPU | RAM | Disk | Monatliche Kosten | Hinweis |
|---|---|---|---|---|---|
| Sliplane | 2 | 2 GB | 40 GB | €9 (~$10.65) | Flat Rate, 1 TB Bandwidth, SSL inklusive |
| Fly.io | 2 | 2 GB | 40 GB | ~$18 | Disk und Bandwidth separat abgerechnet |
| Render | 1 | 2 GB | 40 GB | ~$35 | 100 GB Bandwidth, Disk separat abgerechnet |
| Railway | 2 | 2 GB | 40 GB | ~$67 + $20 Plan | Pro Plan Floor, nutzungsbasiert, Bandwidth separat |
Klick hier um zu sehen, wie diese Zahlen berechnet wurden.
(Angenommen eine durchgehend laufende Instanz mit 730 Stunden/Monat)
- Sliplane: pauschal €9/Monat für den Base Server. Unlimitierte Services auf dem gleichen Server, 1 TB Egress und SSL inklusive.
- Fly.io:
shared-cpu-2x2 GB = $11.83/Mo + 40 GB Volume × $0.15/GB = $6 -> ~$17.83/Mo. Egress separat ($0.02/GB in EU). - Render: nächste Entsprechung ist Standard ($25, 1 vCPU / 2 GB) plus 40 GB Disk × $0.25/GB = $10 -> ~$35/Mo. Ein Upgrade auf Pro (2 vCPU / 4 GB) kostet $85/Mo + Disk.
- Railway (Pro Plan): CPU 2 × $0.00000772/s × 2,628,000 s = $40.57; RAM 2 × $0.00000386/s × 2,628,000 s = $20.29; Volume 40 × $0.00000006/s × 2,628,000 s = $6.31 -> ~$67/Mo Compute, plus der $20/Mo Pro Plan Floor und $0.05/GB Egress.
Bandwidth-Kosten können bei nutzungsbasierten Anbietern schnell steigen. Nutz unser Bandwidth-Kostenvergleichstool, um zu sehen, was dein Egress bei jedem Anbieter kosten würde.
FAQ
Warum sollte ich meine eigene Docker Registry betreiben statt Docker Hub zu nutzen?
Eine private Registry gibt dir unlimitierte private Repositories, keine Pull-Rate-Limits und volle Kontrolle über deine Daten. Das ist besonders nützlich für CI/CD-Pipelines, die häufig pushen und pullen, oder wenn deine Images proprietären Code enthalten, den du nicht bei einem Drittanbieter haben willst.
Kann ich meine Registry mit Sliplane's Custom Registry Feature nutzen?
Ja. Sliplane unterstützt Deployments von Custom Registries. Sobald deine Registry läuft, kannst du sie als Deployment-Quelle für andere Services auf Sliplane konfigurieren.
Wie update ich die Docker Registry?
Ändere den Image Tag in deinen Service Settings (z.B. von registry:3.1.1 auf eine neuere Version) und deploye neu. Schau auf Docker Hub nach der neuesten stabilen Version.
Wie viel Storage brauche ich?
Das hängt von deinen Image-Größen ab und wie viele Versionen du behältst. Ein typisches Web-App-Image ist 100-500 MB groß. Das Standard 40 GB Volume auf Sliplane's Base Server kann Dutzende Images aufnehmen. Du kannst auf einen größeren Server upgraden, wenn du mehr Platz brauchst.
Kann ich Docker Compose mit meiner privaten Registry nutzen?
Ja. In deiner compose.yml referenzierst du Images mit der vollständigen Domain deiner Registry:
services:
web:
image: docker-registry-xxxx.sliplane.app/my-app:latest
Mehr zu Docker Compose findest du in unserem Guide zu Docker Compose.