Einführung
Dieses Tutorial führt Sie durch den Prozess der Auflistung und Verwaltung von Docker-Images in einem Registry, sei es dem öffentlichen Docker Hub oder einem privaten Registry. Sie lernen, wie Sie nach Images suchen, die Liste filtern und die Metadaten Ihrer Docker-Images untersuchen, um Ihre containerisierten Anwendungen effektiv zu verwalten.
Einführung in Docker-Registries
Was ist ein Docker-Registry?
Ein Docker-Registry ist ein zentraler Speicherort zum Speichern, Verwalten und Verteilen von Docker-Images. Es ist ein kritischer Infrastrukturbestandteil für die Containerbereitstellung und -freigabe. Docker-Registries ermöglichen Entwicklern das Pushen, Pullen und Verwalten von Container-Images über verschiedene Umgebungen hinweg.
Hauptkomponenten von Docker-Registries
| Komponente | Beschreibung |
|---|---|
| Image-Repository | Speicherort für Docker-Images |
| Image-Tags | eindeutige Identifikatoren für spezifische Image-Versionen |
| Authentifizierung | Zugriffsmechanismen für die Imageverwaltung |
Docker-Registry-Architektur
graph TD
A[Entwickler] -->|Image pushen| B[Docker-Registry]
B -->|Image ziehen| C[Container-Host]
B -->|Image speichern| D[Image-Repository]
Beliebte Docker-Registries
- Docker Hub (offizielles öffentliches Registry)
- Amazon Elastic Container Registry
- Google Container Registry
- Azure Container Registry
- Selbstgehostete private Registries
Grundlegende Docker-Registry-Operationen
Ziehen eines Images vom Docker Hub
docker pull ubuntu:latest
Pushen eines Images in ein Registry
docker login registry.example.com
docker tag my-image:v1 registry.example.com/my-image:v1
docker push registry.example.com/my-image:v1
Anwendungsfälle für Docker-Registries
Docker-Registries sind unerlässlich für:
- Zentralisierter Imagespeicher
- Versionskontrolle von Container-Images
- Sichere Imageverteilung
- Continuous Integration und Deployment
- Containerverwaltung in mehreren Umgebungen
Arbeiten mit Registry-Images
Arbeitsablauf für die Imageverwaltung
graph LR
A[Lokale Entwicklung] -->|Erstellen| B[Docker-Image]
B -->|Taggen| C[Image-Tagging]
C -->|Pushen| D[Docker-Registry]
D -->|Ziehen| E[Remote-Umgebung]
Grundlegende Image-Operationen
Suchen nach Images
docker search ubuntu
docker search --limit 5 python
Ziehen von Images aus dem Registry
## Ziehen einer spezifischen Image-Version
docker pull nginx:1.21
docker pull python:3.9-slim
## Ziehen des neuesten Images
docker pull alpine:latest
Strategien zum Taggen von Images
| Tag-Typ | Beispiel | Beschreibung |
|---|---|---|
| Versions-Tag | myapp:1.0 |
Spezifische Versions-Release |
| Letzter Tag | myapp:latest |
Aktuellste Version |
| Umgebungs-Tag | myapp:production |
Umgebungsspezifisches Image |
Erstellen und Pushen benutzerdefinierter Images
## Erstellen eines benutzerdefinierten Images
docker build -t myapp:v1 .
## Taggen des Images für das Registry
docker tag myapp:v1 registry.example.com/myapp:v1
## Pushen in das Remote-Registry
docker push registry.example.com/myapp:v1
Erweiterte Imageverwaltung
Auflisten lokaler und entfernter Images
## Lokale Images auflisten
docker images
## Images im Remote-Registry auflisten
docker manifest inspect nginx
Image-Bereinigung und -Aufräumen
## Entfernen nicht verwendeter Images
docker image prune
## Entfernen eines spezifischen Images
docker rmi nginx:latest
Registrierungssicherheit und Best Practices
Authentifizierung und Zugriffskontrolle
graph TD
A[Benutzer] -->|Anmeldeinformationen| B[Docker-Registry]
B -->|Autorisierung| C{Zugriffskontrolle}
C -->|Zugriff gewährt| D[Image Ziehen/Pushen]
C -->|Zugriff verweigert| E[Zugriff abgelehnt]
Registrierungsauthentifizierungsmethoden
| Methode | Beschreibung | Sicherheitsstufe |
|---|---|---|
| Basic Auth | Benutzername/Passwort | Gering |
| Token-basiert | JWT-Authentifizierung | Mittel |
| OAuth | Externer Identitätsanbieter | Hoch |
Implementierung eines sicheren privaten Registrys
Einrichten der Basic-Authentifizierung
## Installation des htpasswd-Dienstprogramms
sudo apt-get install apache2-utils
## Generieren der Passwortdatei
htpasswd -Bc /etc/docker/registry/htpasswd username
## Konfiguration des Registrys mit Authentifizierung
docker run -d \
-p 5000:5000 \
-v /etc/docker/registry/htpasswd:/etc/docker/registry/htpasswd \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/etc/docker/registry/htpasswd" \
registry:2
Image-Scanning und Sicherheitsrisikomanagement
Docker-Image-Sicherheits-Scanning
## Installation des Trivy-Sicherheits-Scanners
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - | sudo apt-key add -
sudo add-apt-repository "deb $(lsb_release -sc) main"
sudo apt-get update
sudo apt-get install trivy
## Scannen des Docker-Images auf Sicherheitslücken
trivy image nginx:latest
Versionsverwaltung und Governance von Images
Implementierung einer Image-Tagging-Strategie
## Beispiel für semantische Versionierung
docker tag myapp:latest myapp:1.0.0
docker tag myapp:latest myapp:1.0.0-stable
## Pushen der versionierten Images
docker push myregistry.com/myapp:1.0.0
docker push myregistry.com/myapp:1.0.0-stable
Netzwerk-Sicherheitsaspekte
Absichern der Registry-Kommunikation
## Aktivieren von TLS für das Registry
docker run -d \
-p 5000:5000 \
-v /path/to/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
registry:2
Best Practices für die Zugriffskontrolle
- Prinzip des geringstmöglichen Zugriffs implementieren
- Starke, eindeutige Passwörter verwenden
- Anmeldeinformationen regelmäßig rotieren
- Multi-Faktor-Authentifizierung aktivieren
- IP-Adressen-Whitelist implementieren
Zusammenfassung
Durch die Beherrschung der in diesem Tutorial behandelten Techniken können Sie Docker-Images in einem Registry effizient auflisten und verwalten, um sicherzustellen, dass Sie über die richtigen Versionen und Konfigurationen für Ihre containerisierten Anwendungen verfügen. Vom Suchen und Filtern bis hin zur Inspektion von Metadaten und der Automatisierung des Abrufs von Images erhalten Sie die Fähigkeiten, Ihre Prozesse zur Verwaltung und Bereitstellung von Docker-Images zu optimieren.



