Deine private Container-Cloud
Warum solltest du für private Images bezahlen oder sie auf öffentlichen Plattformen riskieren? Mit Docker und Nginx baust du dir in weniger als einer Minute eine eigene, sichere Docker Registry.
Vorbereitung: Dein isolierter Registry-Hub
Wir arbeiten wie immer in einem sauberen, neuen Verzeichnis:
mkdir meine-private-registry && cd meine-private-registry
mkdir auth
Schritt 1: Die Infrastruktur (docker-compose.yml)
Wir nutzen zwei Container: Die offizielle Registry (v2) für die Datenhaltung und Nginx, um den Zugriff mit einem Passwort zu schützen.
meine-private-registry/docker-compose.yml:
version: '3.8'
services:
registry:
image: registry:2
restart: always
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry
REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password
volumes:
- ./data:/var/lib/registry
- ./auth:/auth
nginx:
image: nginx:alpine
restart: always
ports:
- "5000:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- registry
Schritt 2: Der Türsteher (Nginx Konfiguration)
Damit die Registry sicher ist, leiten wir den Traffic über Nginx.
meine-private-registry/nginx.conf:
events {}
http {
server {
listen 80;
client_max_body_size 0; # Wichtig für große Images!
location / {
proxy_pass http://registry:5000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
}
Schritt 3: Sicherheit (Passwort erstellen)
Wir erstellen eine htpasswd-Datei im auth-Ordner. (Falls du htpasswd nicht installiert hast, kannst du es kurz via sudo apt install apache2-utils nachholen).
# Ersetze 'admin' durch deinen Wunschnamen
htpasswd -Bc auth/registry.password admin
Schritt 4: Starten und Testen
Jetzt bringen wir das System online:
docker compose up -d
⚠️ 📸 SCREENSHOT ANFRAGE: Hier einen Screenshot vom Terminal einfügen, der die erfolgreich gestarteten Container
registryundnginxzeigt.
Der erste Push
Um ein Image in deine neue Registry zu laden, musst du es "taggen" und dich einloggen:
# 1. Login (Nutze die Credentials von oben)
docker login localhost:5000
# 2. Bestehendes Image taggen
docker tag my-app:latest localhost:5000/my-app:1.0
# 3. Hochladen
docker push localhost:5000/my-app:1.0
Fazit
Glückwunsch! Du hast soeben deine eigene Infrastruktur um einen wichtigen Baustein erweitert. Deine Images liegen nun sicher auf deinem eigenen Server, geschützt durch Nginx und bereit für professionelle Deployments – ganz ohne monatliche Fixkosten.
Cheatsheet für den Alltag
- Herunterfahren (Daten bleiben erhalten):
docker compose down - Herunterfahren & alles löschen:
docker compose down -v - Logs prüfen:
docker compose logs -f
Login