Eine eigene Docker Registry ist sehr nützlich, wenn du eigene Images erstellst, die nur im eigenen Netzwerk verbleiben soll.
Die Docker Registry
Die wohl bekannteste Registry ist wohl der Docker-Hub. Wir haben in der Vergangenheit dort schon Images runter geladen. Es macht Sinn, dass die dahinter stehende Software auch in einem Image zur Verfügung steht.
Installation
Zunächst legst du ein Verzeichnis an, in dem die Images gespeichert werden. Da dies mitunter größere Datenmengen werden können, sollte der Datenträger nicht zu knapp bemessen sein.
sudo mkdir -p /opt/registry/data
Wie üblich kannst du den Container mit einem docker-compose.yml
File erzeugen.
version: "3"
services:
registry:
image: registry:2
container_name: registry
ports:
- "5000:5000"
environment:
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
restart: unless-stopped
volumes:
- /opt/registry/data:/data
Ich installiere die registry auf dem Raspberry Pi namens hans, den du schon aus dem Homeserver Projekt kennst. Mit
docker-compose up -d
wird der Container erzeugt und gestartet.
Ein Image in die registry pushen
Ich wechsle jetzt auf einen anderen Raspberry Pi namens kirk. Dort liegt das hello-world Image schon parat. Dieses tagge ich jetzt, um es für meine eigene registry vorzubereiten:
docker tag hello-world:latest http://hans:5000/hello-world:1.0.0
Damit wird das lokale Image hello-world
mit dem Tag latest
neu getagged für die lokale registry auf hans In der Version 1.0.0
Um das getaggte Image in die registry zu übertragen, gibst du einfach
docker push hans:5000/hello-world:1.0.0
ein. Leider wird dies mit einer Fehlermeldung quittiert, da wir nur eine ungesicherte http Verbindung anbieten. Um das zu korrigieren, erstellst du die Datei /etc/docker/daemon.json mit diesem Inhalt:
{ "insecure-registries":["hans:5000"] }
Dann startest du den docker Service neu
sudo systemctl Restart docker
Damit lässt du ungesicherte Verbindungen zu deiner registry zu. Warnung: Mach dies nur innerhalb deines lokalen Netzwerks! Wie du die registry richtig absicherst, zeig ich dir später.
Jetzt kannst du das docker push
Kommando wie oben wiederholen und dein Image wird übertragen.
Image aus der registry pullen
Als dritter Raspi kommt jetzt carl Spiel, um dort das Image aus unserer eigene registry zu pullen. Auch hier habe ich die Datei /etc/docker/daemon.json
wie oben angegeben erstellt.
Das Kommando für den pull ist
docker pull hans:5000/hello-world:1.0.0
Danach kann mit
docker run hello-world
der Container aus dem Image erzeugt und ausgeführt werden
Ausblick
In späteren Post werden wir die registry noch mit https absichern und evtl. ein Web-Interface einrichten. Dieser Post soll dir nur zeigen, wie du eine Docker Registry in deinem Heimnetz für den Eigenbedarf betreiben kannst.
Ebenso werden wir später endlich mal ein eigenes Image bauen.