HelperSheets/docker/OwnDockerHubOnRaspberryPi.md
2024-08-26 18:09:02 +02:00

3.9 KiB

Eigenen Docker Registry auf einem Raspberry Pi hosten im lokalen Netzwerk

- Docker auf dem Raspberry installieren

Update und Upgrade ausführen:

sudo apt-get update && sudo apt-get upgrade

Anschließend wurde ein Docker Installationsskript zur verfügung gestellt, welches wir nun herunterladen und ausführen.

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Nun noch optional den User in der Docker-Gruppe hinzufügen:

sudo usermod -aG docker $USER

Installation überprüfen:

docker --version

Nachdem nun Docker erfolgreich auf dem Raspberry Pi installiert worden ist, können wir uns nun um die eigentliche Aufgabe kümmern: das Aufsetzen eines Registries im lokalen Netzwerk.

- Registry Container starten und weitere Befehle

Mit diesem Befehl können wir nun den registry container starten: (Dieser wird natürlich zuerst heruntergeladen werden müssen.)

docker run -d -p 5000:5000 --restart=always --name registry registry:2

Stoppe die lokale Registry:

docker container stop registry

Entfernen des Containers mithilfe von:

docker container stop registry && docker container rm -v registry

Automatisches starten des Containers nach einem Neustart:

docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  registry:2

- Eigenes Image in die Registry hochladen

In diesem Beispiel wird das ubuntu image von Docker Hub heruntergeladen, unbenannt und in die lokale Registry hochgeladen.

  1. Ziehen des Images von Docker Hub. (Auf einem anderen Rechner.)
docker pull ubuntu:16.04
  1. Taggen des images. Anstatt localhost muss hier die interne IP oder der Hostname eingetragen werden!
docker tag ubuntu:16.04 IpVomRaspberry:5000/my-ubuntu:latest
  1. Nun Push das Image in die registry.
docker push IpVomRaspberry:5000/my-ubuntu:latest

Falls nun solch eine Rückmeldung kommt;

PS C:\Users\User> docker push IpVomRaspberry:5000/my-ubuntu:latest
The push refers to repository [IpVomRaspberry:5000/my-ubuntu]
Get "https://IpVomRaspberry:5000/v2/": http: server gave HTTP response to HTTPS client

müssen wir entweder HTTPS auf dem Raspberry Pi verwenden (z.B. selber signierte Zertifikate: docs.docker.com) oder wir nutzen HTTP anstelle von HTTPS. Da wir dies nur im lokalen Netzwerk zu testzwecken betreiben, werden wir die IpVomRaspberry zur Liste der "unsicheren" Registries in der Docker-Konfiguration hinzufügen. Dies muss lokal auf dem Gerät, welches die Images pushen/pullen will geschehen.

Hier ein Link für die möglichen Konfigurationen docs.docker.com

Unter Linux:

  1. Erstellen oder bearbeiten Sie die Datei daemon.json im Verzeichnis /etc/docker/ (normalerweise benötigen Sie Root-Berechtigungen).
  2. Fügen Sie folgenden Inhalt hinzu, wobei Sie IpVomRaspberry durch die tatsächliche IP-Adresse ersetzen:
{
  "insecure-registries": ["IpVomRaspberry:5000"]
}
  1. Docker neustarten:
sudo systemctl restart docker

Unter Windows: Einstellungen -> Docker Engine

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "insecure-registries": [
    "IpVomRaspberry:5000"
  ]
}

-> Apply & restart
Nun sollte man die Images pushen und pullen können.

Wichtig: Es hat beim Testen nur mit der IP funktioniert, NICHT mit dem Hostnamen!

Bei der Erstellung wurde sich an die Anleitung von Docker gehalten für das deployen einer Registry. docs.docker.com

Bonus: Zeige alle verfügbaren Images an

Rufe folgende URL auf: http://IpVomRaspberry:5000/v2/_catalog
Als Antwort bekommt man als .json Format eine Liste aller verfügbaren Images.