Raspberry PI 2 als Docker Host verwenden
Wer kommt denn auf so eine Idee mag der ein oder andere sagen, ich finds einfach interessant es auszuprobieren. Folgende Grundvoraussetzungen lege ich fest.- Raspberry PI 2 Modell
- 32 Gb SD Card
- raspbian buster
- nur die notwendigsten Pakete nachinstallieren
- eine SSD am USB Port
- übertakten was geht, aber zuerst default
- es sollte der cloudserver container funktionieren
- Erreichbar über Ethernet mit einer statischen IP
Grundinstallation
Raspian Image runterladen, mit dd auf eine SD kopieren und dann nochmal mounten und folgende Dinge vorbereiten, damit der Rapsberry gleich nach dem ersten Start per Ethernet am Netz ist- eine leere ssh Datei in /boot positionieren
- den hostname in /etc/hostname anpassen
- die statische IP in /etc/dhcpcd.conf eintragen
Nach dem ersten Start
- ssh login mittels pi und raspberry
- passwort von pi ändern
- ssh-keygen damit SSH Keys generiert werden
- eigenen public key in ~/.ssh/authorized_keys eintragen
- sudo apt update && sudo apt -y upgrade
Docker installieren
So jetzt zur eigentlichen Docker Installation, folgende Pakete habe ich dafür nachinstalliert.- sudo apt install vim vim-syntax-docker docker-compose docker.io
- sudo usermod -G docker pi
Die SSD mit einbauen
Die SSD habe ich schon mittels XFS formatiert auf dieser sollen dann die eigentlichen Daten des Containers aber auch die Docker Images liegen, damit diese schneller arbeiten. Normalerweise liegen alle Files von Docker unter /var/lib/docker und damit auf der SD Karte, und die ist gegen die SSD richtig lahm, auch denn der Raspberry PI 2 nur USB 2.0 kann.- sudo systemctl stop docker.service
- sudo mkdir /data
- sudo mount /dev/sda1 /data
- sudo mv /var/lib/docker /data
- sudo ln -s /data/docker /var/lib
- sudo systemctl start docker.service
Cloudserver Image bauen
Den Cloudserver gibt es nicht für die armv7 Architektur, daher muss man sich das Image aus dem git repository selbst bauen.- git clone https://github.com/scality/S3.git
- cd S3
- docker build --label cloudserver .
real 10m51.271s
user 0m2.531s
sys 0m0.811s
Cloudserver starten
zum starten des Images verwende ich folgendes Skript
#!/bin/bash
# die beiden nachfolgenden Werte sind nicht die ich verwendet habe
ACCESS_ID="845c339e-9a86-fff2-964c-2613b10902d8"
ACCESS_KEY="464492933asdase08b75c56bb3f99d3e43b52148e598a776d6e89e9139763e243"
DATA_DIR="/data/s3/data"
META_DIR="/data/s3/metadata"
docker run -d \
--name cloudserver \
-p 8000:8000 \
-e SCALITY_ACCESS_KEY_ID=$ACCESS_ID \
-e SCALITY_SECRET_ACCESS_KEY=$ACCESS_KEY \
-v $DATA_DIR:/usr/src/app/localData \
-v $META_DIR:/usr/src/app/localMetadata \
-e ENDPOINT=docker.messner.click \
-e REMOTE_MANAGEMENT_DISABLE=1 \
-e S3BACKEND=file \
cloudserver
Damit das funktioniert habe ich noch folgendes davor gemacht.
- mkdir /data/s3
- mkdir /data/s3/data
- mkdir /data/s3/metadata
- uuidgen -> das erzeugt die ACCESS_ID
- openssl rand -hex 32 -> das erzeigt den ACCESS_KEY
Overclocking
Als erstes einfach über raspi-config das Overclocking auf high setzen und den Raspberry neu starten. Ich probier dann einfach nochmal das Image from scratch zu bauen.Uups - Netzteil ist zu schwach, ich bekomme im dmesg undevoltage Meldungen, also muss ich den Test wohl verschieben.