Docker Hub: Container-Images einfach erklärt
Autor: Redaktion Domeny.ForSale Veröffentlicht
Kurz gesagt: Docker Hub ist eine Online-Registry für Container-Images. Dort kannst du fertige Pakete zum Ausführen von Anwendungen herunterladen und eigene veröffentlichen. Sie wird unter anderem von Entwicklern genutzt, die einen Webserver, eine Datenbank oder eine Testumgebung benötigen, ohne alle Bestandteile manuell installieren zu müssen. Docker Hub speichert Images, führt deine Anwendung aber nicht selbst aus — das übernimmt die Container-Laufzeitumgebung auf deinem Computer oder Server.
Image, Container und Docker Hub — was unterscheidet sie?
Ein Container-Image ist ein Paket mit einer Anwendung, den benötigten Bibliotheken und der Konfiguration für ihren Start. Ein Container ist eine laufende Instanz eines solchen Images: Er hat eigene Prozesse und eine isolierte Umgebung, teilt sich aber normalerweise den Betriebssystemkern mit dem Host. Aus einem Image lassen sich mehrere Container erstellen.
Docker ist eine Sammlung von Werkzeugen zum Erstellen und Ausführen von Containern. Docker Hub ist ein separater Dienst, der deren Images speichert und bereitstellt. Du kannst ihn mit einem Lager für fertige Pakete vergleichen: Du wählst ein Paket aus, lädst es herunter und führst seinen Inhalt anschließend bei dir aus.
Ein PostgreSQL-Image liefert beispielsweise die Bestandteile, die du zum Starten eines Datenbankservers benötigst. Das bedeutet jedoch nicht, dass Docker Hub die Daten deiner Datenbank speichert. Diese entstehen während des Containerbetriebs. Für ihre dauerhafte Speicherung musst du gesondert vorsorgen, etwa mit einem Volume — einem Speicherbereich, der unabhängig vom Lebenszyklus des Containers besteht.
Was findest du in einem Image-Repository?
Ein Repository auf Docker Hub ist eine Sammlung von Images, die unter einem gemeinsamen Namen veröffentlicht werden. Es kann verschiedene Anwendungsversionen, Umgebungsvarianten und Images für unterschiedliche Prozessorarchitekturen enthalten. Öffentliche Repositories sind für andere Nutzer zugänglich; der Zugriff auf private Repositories ist durch Berechtigungen eingeschränkt.
Die Adresse eines Images hat üblicherweise die Form konto/name:tag. Ein Tag ist eine Kennzeichnung für eine bestimmte Variante oder Version, zum Beispiel firma/anwendung:1.4. Bei Images aus dem Programm Docker Official Images wird häufig ein kürzerer Name verwendet, etwa nginx:stable.
Suche auf der Repository-Seite vor allem nach Startanweisungen, verfügbaren Tags, erforderlichen Umgebungsvariablen und Informationen zur Datenspeicherung. Das Herunterladen allein reicht nicht aus, wenn die Anwendung ein Passwort, eine Netzwerkkonfiguration oder zusätzliche Dienste benötigt.
Ein Tag ist kein unveränderlicher Identifikator: Der Herausgeber kann ihm ein neueres Image zuweisen. Das gilt auch für die Kennzeichnung latest, die weder die nach Versionsnummer neueste Version noch die höchste Stabilität garantiert. Wenn du bei späteren Bereitstellungen exakt dasselbe Image benötigst, kannst du dessen Digest angeben — einen kryptografischen Identifikator des Inhalts.
Wie lädst du ein Image von Docker Hub herunter und startest es?
Für einen einfachen Test muss Docker installiert sein und laufen, beispielsweise über Docker Desktop oder Docker Engine. Nicht jeder öffentliche Download erfordert ein Konto bei Docker Hub. Die Authentifizierung und die Limits des Dienstes können den Zugriff jedoch beeinflussen.
Das folgende Beispiel startet einen Nginx-Server, also ein Programm, das Webanfragen verarbeitet:
docker pull nginx:stable
docker run --name test-nginx -d -p 127.0.0.1:8080:80 nginx:stable
Der erste Befehl lädt das Image herunter. Der zweite erstellt einen Container namens test-nginx und startet ihn mithilfe der Option -d im Hintergrund. Die Angabe 127.0.0.1:8080:80 macht Port 80 des Containers über Port 8080 verfügbar, und zwar ausschließlich auf der lokalen Netzwerkschnittstelle des Computers.
Öffne im Browser die Adresse http://localhost:8080, um die Begrüßungsseite des Servers zu sehen. Stoppe und entferne den Container nach dem Test:
docker stop test-nginx
docker rm test-nginx
Der Befehl docker run kann ein fehlendes Image selbst herunterladen. Ein separates docker pull ist deshalb nicht immer nötig. Beide Schritte einzeln zu zeigen, verdeutlicht den Unterschied zwischen dem Herunterladen des Pakets und dem Starten der Anwendung.
Wie wählst du Images aus und begrenzt Risiken?
Ein Container-Image enthält Code, den du in deiner eigenen Umgebung ausführst. Die Beliebtheit eines Repositories ersetzt nicht die Prüfung des Herausgebers, der Dokumentation und der Projektpflege. Die Kennzeichnung Docker Official Images hilft dir, Images aus diesem Programm zu erkennen, garantiert aber nicht, dass sie frei von Sicherheitslücken sind.
Prüfe vor der Verwendung eines Images:
- Herkunft: Gehört das Repository zum erwarteten Herausgeber und wird es in der Projektdokumentation genannt?
- Wartung: Erhält die ausgewählte Version weiterhin Updates und Sicherheitskorrekturen?
- Berechtigungen: Benötigt der Container tatsächlich Zugriff auf Dateien des Hosts oder erhöhte Berechtigungen?
- Konfiguration: Welche Ports gibst du frei und wie übergibst du Passwörter und andere Geheimnisse?
Speichere keine Passwörter, API-Schlüssel oder privaten Zertifikate in einem Image, das du veröffentlichst. Wenn du eine Datei erst in einem späteren Build-Schritt löschst, kann ihr Inhalt in einer früheren Image-Schicht erhalten bleiben. Auch ein privates Repository sollte nicht als Speicher für Geheimnisse dienen.
Wann lohnt es sich, eigene Images zu veröffentlichen, und was prüfst du vor der Bereitstellung?
Ein eigenes Repository ist nützlich, wenn du dieselbe Anwendungsversion an dein Team weitergeben oder auf verschiedenen Servern bereitstellen möchtest. Typischerweise erstellst du ein Image aus einer Dockerfile-Datei, meldest dich mit docker login an, vergibst einen zum Repository passenden Namen und lädst das Image mit docker push hoch.
Docker Hub ist nicht die einzige Image-Registry. Eine Organisation kann einen anderen Dienst oder eine eigene Registry verwenden, wenn sie bestimmte Zugriffsregeln, Integrationen oder Kontrolle über die Speicherung von Artefakten benötigt.
Prüfe vor der Bereitstellung in der offiziellen Dokumentation von Docker Hub die aktuellen Download-Limits, die Bedingungen des jeweiligen Tarifs und die Verfügbarkeit privater Repositories. Beginne bei deinem ersten Projekt mit einem lokalen Test eines vertrauenswürdigen Images. Halte anschließend die gewählte Version und die Startkonfiguration fest, damit du die Umgebung reproduzieren kannst.
Siehe auch: Was bedeutet www?
