130 lines
3.9 KiB
Markdown
130 lines
3.9 KiB
Markdown
# Eigenen Docker Registry auf einem Raspberry Pi hosten im lokalen Netzwerk
|
|
|
|
### - Docker auf dem Raspberry installieren
|
|
|
|
Update und Upgrade ausführen:
|
|
```shell
|
|
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.
|
|
|
|
```shell
|
|
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:
|
|
```shell
|
|
sudo usermod -aG docker $USER
|
|
```
|
|
|
|
Installation überprüfen:
|
|
```shell
|
|
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.)
|
|
```shell
|
|
docker run -d -p 5000:5000 --restart=always --name registry registry:2
|
|
```
|
|
#### Stoppe die lokale Registry:
|
|
```shell
|
|
docker container stop registry
|
|
```
|
|
|
|
#### Entfernen des Containers mithilfe von:
|
|
```shell
|
|
docker container stop registry && docker container rm -v registry
|
|
```
|
|
#### Automatisches starten des Containers nach einem Neustart:
|
|
```shell
|
|
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.)
|
|
```shell
|
|
docker pull ubuntu:16.04
|
|
```
|
|
2. Taggen des images. Anstatt localhost muss hier die interne IP oder der Hostname eingetragen werden!
|
|
```shell
|
|
docker tag ubuntu:16.04 IpVomRaspberry:5000/my-ubuntu:latest
|
|
```
|
|
3. Nun Push das Image in die registry.
|
|
```shell
|
|
docker push IpVomRaspberry:5000/my-ubuntu:latest
|
|
```
|
|
|
|
Falls nun solch eine Rückmeldung kommt;
|
|
```shell
|
|
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](https://docs.docker.com/registry/insecure/)) 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](https://docs.docker.com/engine/reference/commandline/dockerd/)
|
|
|
|
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:
|
|
```shell
|
|
{
|
|
"insecure-registries": ["IpVomRaspberry:5000"]
|
|
}
|
|
```
|
|
3. Docker neustarten:
|
|
```shell
|
|
sudo systemctl restart docker
|
|
```
|
|
|
|
Unter Windows:
|
|
Einstellungen -> Docker Engine
|
|
```json
|
|
{
|
|
"builder": {
|
|
"gc": {
|
|
"defaultKeepStorage": "20GB",
|
|
"enabled": true
|
|
}
|
|
},
|
|
"experimental": false,
|
|
"features": {
|
|
"buildkit": true
|
|
},
|
|
"insecure-registries": [
|
|
"IpVomRaspberry:5000"
|
|
]
|
|
}
|
|
```
|
|
|
|
-> Apply & restart <br>
|
|
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](https://docs.docker.com/registry/deploying/)
|
|
|
|
|
|
|
|
### Bonus: Zeige alle verfügbaren Images an
|
|
|
|
Rufe folgende URL auf: ```http://IpVomRaspberry:5000/v2/_catalog``` <br>
|
|
Als Antwort bekommt man als .json Format eine Liste aller verfügbaren Images. |