Die eigene Docker Registry

Eine eigene Docker Registry ist sehr nützlich, wenn du eigene Images erstellst, die nur im eigenen Netzwerk verbleiben soll.

Docker Logo (Wikipedia/dotCloud Inc. Apache Licence 2.0)
Docker Logo (Wikipedia/dotCloud Inc. Apache Licence 2.0)

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

docker pull und docker run mit der eigenen Docker Registry
docker pull und docker run mit der eigenen Docker Registry

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.

Schreibe einen Kommentar

WordPress Cookie Hinweis von Real Cookie Banner