Docker Hub
Docker Hub ist die öffentliche Docker Registry von Docker Inc.
Größte Sammlung von Docker Images - wie der App Store für Container.
Was ist Docker Hub?
Docker Hub ist die zentrale Registry für Docker Images - kostenlos für öffentliche Images.
Features:
- 🆓 Kostenlos für öffentliche Images
- 🔒 Private Repositories (1 kostenlos, mehr kostenpflichtig)
- ✅ Official Images - Von Docker verifiziert
- 🤖 Automated Builds - Automatischer Build aus GitHub
- 👥 Teams & Organizations - Kollaboration
- 📊 Analytics - Download-Statistiken
Docker Hub Account
Registrierung
# 1. Account erstellen auf hub.docker.com
# 2. Anmelden
docker login
# Login mit Username/Password:
# Username: maxmustermann
# Password: ********
# Login Succeeded
# Mit Token (empfohlen)
docker login -u maxmustermann -p <access-token>
# Status prüfen
docker info | grep Username
Ausloggen
# Ausloggen
docker logout
# Von spezifischer Registry
docker logout registry.example.com
Images suchen
Über CLI
# Images suchen
docker search nginx
# Output:
# NAME DESCRIPTION STARS OFFICIAL
# nginx Official build of Nginx. 15000 [OK]
# jwilder/nginx-proxy Automated nginx proxy 2000
# bitnami/nginx Bitnami nginx image 500
# Mit Limit
docker search --limit 5 postgres
# Nach Official Images filtern
docker search --filter "is-official=true" nginx
# Nach Stars filtern
docker search --filter "stars=100" nginx
Über Web
https://hub.docker.com
Suche nach:
- Official Images (von Docker verifiziert)
- Verified Publisher (von Firmen verifiziert)
- Community Images (von Usern)
Images herunterladen
# Latest Version
docker pull nginx
docker pull nginx:latest
# Spezifische Version
docker pull nginx:1.21
docker pull postgres:14
docker pull node:16-alpine
# Vollständiger Name
docker pull docker.io/nginx:latest
# ↑ Registry ↑ Image ↑ Tag
# Von anderem User
docker pull username/myimage:latest
# Multi-Arch Images
docker pull --platform linux/amd64 nginx
docker pull --platform linux/arm64 nginx
Eigene Images hochladen
Image vorbereiten
# 1. Image bauen oder taggen
docker build -t myapp:1.0 .
# 2. Mit Username taggen (WICHTIG!)
docker tag myapp:1.0 username/myapp:1.0
docker tag myapp:1.0 username/myapp:latest
# Naming Convention:
# <username>/<repository>:<tag>
Image pushen
# Bei Docker Hub angemeldet sein!
docker login
# Image hochladen
docker push username/myapp:1.0
docker push username/myapp:latest
# Alle Tags pushen
docker push username/myapp --all-tags
# Output zeigt Upload-Fortschritt:
# The push refers to repository [docker.io/username/myapp]
# abc123: Pushed
# def456: Pushed
# 1.0: digest: sha256:abc... size: 1234
Repositories verwalten
Public Repository
# Public Repo erstellen (über Web oder automatisch beim Push)
# Jeder kann pullen:
docker pull username/myapp:latest
# Kostenlos, unbegrenzt viele
Private Repository
# Private Repo (über Web erstellen oder beim ersten Push)
# Nur du (und Team-Mitglieder) können pullen
docker pull username/private-app:latest
# Erfordert: docker login
# Kostenlos: 1 private Repo
# Kostenpflichtig: Mehr private Repos
Official Images
Von Docker geprüft und optimiert
# Erkennbar am "Official Image" Badge
# Beliebte Official Images:
docker pull nginx # Web Server
docker pull postgres # Datenbank
docker pull redis # Cache
docker pull node # JavaScript Runtime
docker pull python # Python Runtime
docker pull mysql # Datenbank
docker pull mongo # NoSQL DB
docker pull ubuntu # OS
docker pull alpine # Minimal OS
Vorteile:
- ✅ Sicher und geprüft
- ✅ Best Practices
- ✅ Regelmäßig aktualisiert
- ✅ Gut dokumentiert
Verified Publisher
Von Firmen verifiziert
# Beispiele:
docker pull bitnami/nginx
docker pull gitlab/gitlab-ce
docker pull microsoft/mssql-server-linux
# Erkennbar am "Verified Publisher" Badge
Automated Builds
GitHub Integration
# 1. Repository auf hub.docker.com erstellen
# 2. GitHub Account verknüpfen
# 3. Automated Build aktivieren
# Bei jedem Git-Push:
# → Docker Hub baut automatisch neues Image
# → Tag basiert auf Git-Branch/Tag
# Beispiel:
# Git Tag: v1.0 → Image Tag: 1.0
# Git Branch: main → Image Tag: latest
Praktisches Beispiel
Image erstellen und teilen
# 1. Dockerfile erstellen
cat > Dockerfile <<EOF
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/
EOF
# 2. HTML Datei
echo "<h1>My Docker Image</h1>" > index.html
# 3. Image bauen
docker build -t mywebsite:1.0 .
# 4. Mit Username taggen
docker tag mywebsite:1.0 maxmustermann/mywebsite:1.0
docker tag mywebsite:1.0 maxmustermann/mywebsite:latest
# 5. Anmelden
docker login
# 6. Hochladen
docker push maxmustermann/mywebsite:1.0
docker push maxmustermann/mywebsite:latest
# 7. Von überall abrufbar!
docker pull maxmustermann/mywebsite:latest
docker run -d -p 8080:80 maxmustermann/mywebsite:latest
Tagging Strategie
Semantic Versioning
# Version Tags
docker tag myapp username/myapp:1.0.0
docker tag myapp username/myapp:1.0
docker tag myapp username/myapp:1
docker tag myapp username/myapp:latest
# Push alle
docker push username/myapp --all-tags
# User können wählen:
# docker pull username/myapp:latest # Neueste
# docker pull username/myapp:1 # Major Version 1
# docker pull username/myapp:1.0 # Minor Version 1.0
# docker pull username/myapp:1.0.0 # Exact Version
Environment Tags
# Development
docker tag myapp username/myapp:dev
# Staging
docker tag myapp username/myapp:staging
# Production
docker tag myapp username/myapp:prod
docker tag myapp username/myapp:latest
Image Beschreibung & README
# README auf Docker Hub
Über Web-Interface editierbar:
- Beschreibung
- Verwendung
- Umgebungsvariablen
- Beispiele
- Links
Unterstützt Markdown!
Docker Hub Limits
Pull Rate Limits
ANONYMOUS: 100 pulls / 6 Stunden
FREE ACCOUNT: 200 pulls / 6 Stunden
PRO/TEAM: Unlimited
Pro IP-Adresse!
# Limit prüfen
curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | \
jq -r '.token' | \
xargs -I {} curl -s -H "Authorization: Bearer {}" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest -I | \
grep RateLimit
# Output:
# ratelimit-limit: 200;w=21600
# ratelimit-remaining: 195;w=21600
Workarounds
# 1. Anmelden
docker login # Höheres Limit
# 2. Private Registry verwenden
# 3. Caching Proxy einrichten
# 4. Pro Account kaufen
Best Practices
Docker Hub Best Practices
1. Spezifische Tags verwenden
# ✅ Gut
FROM node:16.14.2-alpine
# ❌ Schlecht - ändert sich!
FROM node:latest
2. README pflegen
# Ausführliche Beschreibung
# Verwendungsbeispiele
# Environment Variables
# Volumes
# Ports
3. Multi-Arch Images
# Baue für mehrere Plattformen
docker buildx build --platform linux/amd64,linux/arm64 -t username/myapp:latest .
4. Image scannen
# Vulnerabilities prüfen
docker scout quickview username/myapp:latest
docker scout cves username/myapp:latest
5. Automated Builds
# GitHub Integration für Auto-Builds
# CI/CD Pipeline einrichten
Alternativen zu Docker Hub
ANDERE PUBLIC REGISTRIES:
- GitHub Container Registry (ghcr.io)
- Google Container Registry (gcr.io)
- Amazon ECR Public (public.ecr.aws)
- Red Hat Quay.io
PRIVATE REGISTRIES:
- AWS ECR
- Google GCR
- Azure ACR
- Harbor (Self-hosted)
- GitLab Container Registry
Zusammenfassung
Docker Hub Kernpunkte
- Zentrale Registry: Größte Image-Sammlung
- Official Images: Geprüft und sicher
- Kostenlos: Public Repos unbegrenzt
- Private Repos: 1 kostenlos, mehr kostenpflichtig
- Automated Builds: GitHub Integration
- Rate Limits: 100-200 pulls/6h
Workflow
- Account erstellen auf hub.docker.com
docker login- Image mit Username taggen
docker push username/image:tag- Image ist öffentlich verfügbar!
Verwandte Konzepte
- Docker - Hauptnotiz
- Docker Image - Images hochladen/herunterladen
- Docker Registry - Private Registries
- Dockerfile - Images bauen für Hub