Erfahren Sie, wie Sie Ihre Docker-Images speichern, entweder in einer selbst ge­hos­te­ten lokalen Registry oder in einem Docker Hub-Re­po­si­to­ry. Auf diese Weise können Sie Ihre Docker-Images speichern und or­ga­ni­sie­ren und Images für mehrere Teams freigeben.

"Registry" versus "Re­po­si­to­ry".

Ein Re­po­si­to­ry ist ein Ort, an dem Daten tat­säch­lich ge­spei­chert werden. Eine Registry ist eine Sammlung von Verweisen auf diese Daten.

Der Katalog einer Bi­blio­thek ist in diesem Beispiel die Registry, die Sie kon­sul­tie­ren würden, um den Standort des ge­wünsch­ten Buches zu finden. Die ei­gent­li­chen Bü­cher­re­ga­le der Bi­blio­thek sind ihr Auf­be­wah­rungs­ort.

An­for­de­run­gen

  • Grund­kennt­nis­se in der Ver­wen­dung von Docker und Kom­man­do­zei­len-Befehlen.
  • Docker wurde auf Ihrem System in­stal­liert und läuft dort.
  • Eine In­ter­net­ver­bin­dung.

Wenn Sie ein selbst ge­hos­te­tes Re­po­si­to­ry ein­rich­ten und es über das Internet zu­gäng­lich machen, benötigen Sie zu­sätz­lich:

SSL-Zer­ti­fi­kat kaufen
Sichern Sie sich Ihr SSL-Zer­ti­fi­kat
  • Ver­schlüs­selt die Website-Kom­mu­ni­ka­ti­on
  • Ver­hin­dert Si­cher­heits­war­nun­gen
  • Ver­bes­sert die Google-Plat­zie­rung
SSL-Zer­ti­fi­kat-Checker

Ein­rich­ten einer selbst ge­hos­te­ten Docker-Registry

Docker bietet einen in­te­grier­ten Re­gis­trie­rungs­ser­ver. Der Registry-Server läuft in einem Container, den Sie mit dem Befehl docker run starten können.

Um bei­spiels­wei­se einen Re­gis­trie­rungs­ser­ver namens "my-registry" zu starten, lautet der Befehl:

sudo docker run -d -p 5000:5000 --name my-registry registry:2
Hinweis

Wenn Sie eine Firewall verwenden, müssen Sie mög­li­cher­wei­se den Zugriff auf Port 5000 erlauben.

Image in Ihre selbst gehostete Registry ver­schie­ben

Der erste Schritt zur Ver­wen­dung Ihrer selbst ge­hos­te­ten Re­gis­trie­rung besteht darin, ein Docker-Image für diese Re­gis­trie­rung mit dem Befehl docker tag zu markieren:

sudo docker tag [image name] localhost:5000/[image name]

Um bei­spiels­wei­se das Image my-nginx für Ihre selbst gehostete Registry neu zu markieren, lautet der Befehl:

sudo docker tag my-nginx localhost:5000/my-nginx

Sie können dieses Image dann mit folgendem Befehl in Ihre Registry ver­schie­ben:

sudo docker push localhost:5000/[image name]

Der Befehl, um das Image, das wir im obigen Beispiel erstellt haben, zu ver­schie­ben, lautet:

sudo docker push localhost:5000/my-nginx

Abrufen eines Images aus Ihrer selbst ge­hos­te­ten Registry

Der Befehl, um ein Image aus Ihrer Registry zu laden, lautet:

sudo docker pull localhost:5000/[image name]

Um bei­spiels­wei­se das Image, das wir im obigen Beispiel erstellt haben, zu laden, lautet der Befehl:

sudo docker pull localhost:5000/my-nginx

Stoppen und Löschen Ihrer selbst ge­hos­te­ten Re­gis­trie­rung

Wenn Sie einen Fehler machen oder einfach nur die von Ihnen erstellte Re­gis­trie­rung zusammen mit allen dort ge­spei­cher­ten Images stoppen und entfernen möchten, verwenden Sie folgenden Befehl:

sudo docker stop [repository name] && docker rm -v [repository name]

Um zum Beispiel die von uns oben erstellte Registry mit Namen My-registry zu stoppen und zu entfernen, lautet der Befehl:

sudo docker stop my-registry && docker rm -v my-registry

Externen Zugriff auf Ihre selbst gehostete Registry er­mög­li­chen

Bevor Sie mit der Freigabe Ihrer privaten Registry beginnen, müssen Sie den Zugriff mit TLS über ein SSL-Zer­ti­fi­kat sichern.

Erstellen Sie ein Ver­zeich­nis namens certs in Ihrem Docker-Root-Ver­zeich­nis. Auf den meisten Systemen ist dies das Ver­zeich­nis /var/lib/docker:

sudo mkdir /var/lib/docker/certs

Geben Sie IhreR SSL-Zer­ti­fi­kat-Datei  (cert) den Namen domain.crt und Ihrem SSL-Schlüssel den Namen domain.key

Wenn Sie eine be­stehen­de, selbst gehostete Registry ak­tua­li­sie­ren, müssen Sie diese mit folgendem Befehl stoppen:

sudo docker stop [repository name]

Starten (oder restarten) Sie Ihre selbst gehostete Registry mit dem Befehl:

sudo docker run -d -p 5000:5000 --restart=always --name my-registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2

Zugriff auf Ihre selbst gehostete Registry von einem anderen Host aus

Um von einem anderen Host aus auf Ihre Registry zu­zu­grei­fen, verwenden Sie [ihre Domain]:5000/[Bildname].

Um bei­spiels­wei­se ein Image mit dem Namen my-nginx an eine Registry zu über­tra­gen, die auf example.com gehostet wird, müssen Sie zuerst das Image markieren:

sudo docker tag my-nginx example.com:5000/my-nginx

Sie können das Image dann mit folgendem Befehl ver­schie­ben:

sudo docker push example.com:5000/ubuntu

Um das gleiche Bild aus dieser Registry zu laden, verwenden Sie den Befehl:

sudo docker pull example.com:5000/ubuntu

Ein­rich­ten eines Docker Hub Re­po­si­to­ry

Die Docker Hub-Website ist ein prak­ti­scher Ort, um Ihre Docker-Images in der Cloud zu speichern und zu or­ga­ni­sie­ren. Sie können diese Website verwenden, um Ihr eigenes öf­fent­li­ches oder privates Re­po­si­to­ry zu hosten, den Be­nut­zer­zu­griff auf das Re­po­si­to­ry zu verwalten und von überall online auf das Re­po­si­to­ry zu­zu­grei­fen.

Of­fi­zi­el­le Images

Der Docker Hub ist auch ein aus­ge­zeich­ne­ter Ort, um öf­fent­li­che Docker-Images  zu durch­su­chen. Beachten Sie, dass nur die mit "Official" ge­kenn­zeich­ne­ten Re­po­si­to­ries die of­fi­zi­el­len Versionen der Images enthalten.

Wir empfehlen, dass Sie nur of­fi­zi­el­le Docker-Images laden und ausführen.

Erstellen eines Docker-Hub-Kontos

Um zu beginnen, müssen Sie ein Docker-Hub-Konto ein­rich­ten. Füllen Sie Ihre Kon­to­da­ten auf der Haupt­sei­te von Docker Hub aus und klicken Sie auf Anmelden.

Über­prü­fen Sie Ihr E-Mail-Konto auf eine Nachricht, um Ihre Kon­to­ak­ti­vie­rung ab­zu­schlie­ßen, und melden Sie sich dann bei der Website an.

Jedes Docker-Hub-Konto kann eine Reihe von kos­ten­lo­sen öf­fent­li­chen Re­po­si­to­ries erstellen. Jedes Konto wird auch mit einem kos­ten­lo­sen privaten Re­po­si­to­ry geliefert. Sie können gegen eine mo­nat­li­che Gebühr weitere private Re­po­si­to­ries erwerben.

Or­ga­ni­sa­ti­on und Teams Aufbauen

Mit Docker Hub können Sie Or­ga­ni­sa­tio­nen und Teams ein­rich­ten, um eine Reihe von Benutzern zu verwalten. Dies ist praktisch, wenn Sie mehrere ver­schie­de­ne Per­so­nen­grup­pen haben und deren Be­rech­ti­gun­gen separat verwalten müssen.

Die drei Zu­griffs­ebe­nen sind:

  • Lesen (kann nur Images laden, nicht ver­schie­ben)
  • Schreiben (kann sowohl Images laden als auch ver­schie­ben)
  • Admin (kann Images laden und ver­schie­ben sowie Benutzer hin­zu­fü­gen und löschen)

Erstellen einer Or­ga­ni­sa­ti­on

Klicken Sie im Docker Hub Dashboard auf Or­ga­ni­sa­ti­on erstellen (Create Org.).

Geben Sie die Details des Un­ter­neh­mens ein und klicken Sie dann auf Erstellen.

Jedes Un­ter­neh­men beginnt mit einem Stan­dard­team, das als Ei­gen­tü­mer (Owner) be­zeich­net wird.

Um jemand anderen zu den Ei­gen­tü­mern hin­zu­zu­fü­gen, füllen Sie den Be­nut­zer­na­men des Docker Hubs aus und klicken Sie auf das blaue +.

Ein­stel­len Ihrer Or­ga­ni­sa­ti­on auf öf­fent­lich oder privat

Un­ter­neh­men sind stan­dard­mä­ßig öf­fent­lich. Um Ihre Or­ga­ni­sa­ti­on auf Privat ein­zu­stel­len, klicken Sie auf der Haupt­sei­te der Or­ga­ni­sa­ti­on auf Ein­stel­lun­gen (settings).

Klicken Sie auf Privat und dann auf Speichern.

Hin­zu­fü­gen eines Teams

Um ein Team hin­zu­zu­fü­gen, wählen Sie Ihren Or­ga­ni­sa­ti­ons­na­men aus dem Dropdown-Menü (falls er nicht bereits aus­ge­wählt ist) und klicken Sie auf Teams.

Klicken Sie auf der Seite Teams auf Team hin­zu­fü­gen (Create team).

Füllen Sie den Teamnamen und die Be­schrei­bung aus und klicken Sie dann auf Hin­zu­fü­gen.

Hinweis

Jedes Mal, wenn Sie jemanden zu einem Team hin­zu­fü­gen, erhält er eine E-Mail von Docker Hub, die ihn über die Änderung in­for­miert.

Erstellen eines Docker Hub Re­po­si­to­ry

Klicken Sie im Docker Hub Dashboard auf Re­po­si­to­ry erstellen.

Füllen Sie die Re­po­si­to­ry-Details aus (stellen Sie sicher, dass die Dropdown-Liste Sicht­bar­keit entweder öf­fent­lich oder privat ist), und klicken Sie dann auf Erstellen.

Auf der nächsten Seite finden Sie Details zu Ihrem neuen Re­po­si­to­ry, ein­schließ­lich des Docker Pull-Befehls für Ihre Images.

Ein­stel­len des Team­zu­griffs auf das Re­po­si­to­ry

Um den Zugriff auf Ihr Re­po­si­to­ry nach Team ein­zu­rich­ten, klicken Sie auf Team­mit­glie­der (col­la­bo­ra­tors).

In unserem Beispiel haben wir zwei Teams:

  • Die QS-Abteilung jdoe­soft­ware­qa, die Lese- (aber nicht Schreib-)Zugriff auf die Images benötigt.
  • Die Ent­wick­ler jdoe­soft­ware­dev, die sowohl Lese- als auch Schreib­zu­griff auf die Images benötigen.

Es ist nicht notwendig, dass die Qua­li­täts­si­che­rung ak­tua­li­sier­te Images in das Re­po­si­to­ry schiebt, und wir wollen ver­hin­dern, dass sie dies aus Versehen tun. Die Ent­wick­ler benötigen jedoch vollen Zugriff auf das Re­po­si­to­ry.

Aus Si­cher­heits­grün­den ist es ratsam, alle Docker-Hub-Benutzer in min­des­tens zwei Gruppen ein­zu­tei­len:

Um den Zugriff eines Teams fest­zu­le­gen, wählen Sie das Team und die Zu­griffs­ebe­ne aus den Dropdown-Menüs aus und klicken Sie dann auf Team hin­zu­fü­gen.

Zugriff auf das Docker Hub Re­po­si­to­ry über die Kommando-Zeile

Um über die Kommando-Zeile auf Ihr Docker Hub-Re­po­si­to­ry zugreifen zu können, müssen Sie sich zunächst mit dem von Ihnen auf der Website er­stell­ten Login bei Docker Hub au­then­ti­fi­zie­ren:

sudo docker login

Sie werden auf­ge­for­dert, Ihren Docker-Hub-An­mel­de­na­men, Ihr Passwort und Ihre E-Mail-Adresse anzugeben.

Sobald Sie sich an­ge­mel­det haben, können Sie mit den Befehlen docker push und docker pull auf Ihr Docker Hub Re­po­si­to­ry zugreifen.

Image in Ihr Docker Hub Re­po­si­to­ry ver­schie­ben

Um ein Image in Ihr Docker-Hub-Re­po­si­to­ry hoch­zu­la­den (Push), müssen Sie zunächst das Bild vor­be­rei­ten. Folgendes wird benötigt:

  • Ihr Docker Hub-Be­nut­zer­na­me oder der Name Ihrer Docker-Hub-Or­ga­ni­sa­ti­on.
  • Der Name Ihres Docker-Hub-Re­po­si­to­rys.
  • Optional: Ein Versions-Tag. (Wenn kein Tag angegeben ist, wird er stan­dard­mä­ßig auf "latest." gesetzt)

Sie können ein be­stehen­des Image mit folgendem Befehl um­be­nen­nen:

sudo docker tag [existing image name or ID] [Docker Hub username or organization]/[repository name]:[tag]

Wenn der Docker-Hub-Benutzer jdoe bei­spiels­wei­se ein aktuelles Image mit dem Namen my-ubuntu-test in ein Docker-Hub-Re­po­si­to­ry mit dem Namen ubuntu-test hochladen und es mit einem Tag der Version 1.0 versehen möchte, müsste das Image zunächst mit folgendem Befehl umbenannt werden:

sudo docker tag my-ubuntu-test jdoe/ubuntu-test:1.0

Wenn jdoe plant, das Image in das Re­po­si­to­ry unter der Or­ga­ni­sa­ti­ons­ein­heit jdoe­soft­ware zu ver­schie­ben, dann lautet der Befehl:

sudo docker tag my-ubuntu-test jdoesoftware/ubuntu-test:1.0

Sie können über­prü­fen, ob das Image korrekt umbenannt wurde, indem Sie alle Docker-Images auf Ihrem System mit diesem Befehl auflisten:

sudo docker images

Als nächstes können Sie das Image mit folgendem Befehl in das Re­po­si­to­ry ver­schie­ben:

sudo docker push [Docker Hub username or organization name]/[repository name]:[tag]

Der Befehl, um das Image, das wir im vor­he­ri­gen Beispiel umbenannt haben, zu ver­schie­ben, lautet:

sudo docker push jdoe/ubuntu-test:1.0

Oder:

sudo docker push jdoesoftware/ubuntu-test:1.0

Um zu über­prü­fen, ob das Image an den Docker Hub über­tra­gen wurde, gehen Sie zum Docker-Hub-Dashboard und klicken Sie auf Details für Ihr Re­po­si­to­ry.

Klicken Sie auf der Re­po­si­to­ry-Seite auf Tags.

Hier werden die Versionen auf­ge­lis­tet, die in das Re­po­si­to­ry ver­scho­ben wurden, zusammen mit der Zeit der letzten Ak­tua­li­sie­rung.

Laden eines Images aus Ihrem Docker Hub Re­po­si­to­ry

Der Befehl zum Aufrufen eines Images aus Ihrem Docker Hub-Re­po­si­to­ry wird auf der Re­po­si­to­ry-Seite auf der Docker Hub-Website angezeigt.

Der Befehl lautet:

sudo docker pull [your Hub username or organization name]/[your Hub repository name]:[tag]

Um bei­spiels­wei­se das Image jdoe/ubuntu-test:1.0 zu laden, das wir im obigen Abschnitt auf den Hub geschoben haben, lautet der Befehl:

sudo docker pull jdoe/ubuntu-test:1.0

Oder:

sudo docker pull jdoesoftware/ubuntu-test:1.0

Sie können über­prü­fen, ob das Image korrekt umbenannt wurde, indem Sie alle Docker-Images auf Ihrem System mit folgendem Befehl auflisten:

sudo docker images
Dedicated Server
De­di­zier­te Server mit mo­derns­ten Pro­zes­so­ren
  • 100 % En­ter­pri­se-Hardware
  • Kon­fi­gu­rier­ba­re Hardware-Aus­stat­tung
  • ISO-zer­ti­fi­zier­te Re­chen­zen­tren
Zum Hauptmenü