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.
- Ziehen des Images von Docker Hub. (Auf einem anderen Rechner.)
docker pull ubuntu:16.04
- 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
- 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:
- Erstellen oder bearbeiten Sie die Datei daemon.json im Verzeichnis /etc/docker/ (normalerweise benötigen Sie Root-Berechtigungen).
- Fügen Sie folgenden Inhalt hinzu, wobei Sie IpVomRaspberry durch die tatsächliche IP-Adresse ersetzen:
{
"insecure-registries": ["IpVomRaspberry:5000"]
}
- 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.