Dienstag, 25. Februar 2020

Raspberrypi 2 als Docker Host

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 
Damit man mit dem User pi auch docker ohne sudo bedienen kann noch den User pi zur Gruppe docker hinzufügen
  •  sudo usermod -G docker pi
Damit muss man sich entweder neu einloggen oder mit dem Befehl newgrp docker die aktuelle Session aktualisieren.

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
Danach ist z.B. das Image bauen um einiges schneller.

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 .
Das hat jetzt bei mir rund 10 Minuten gedauert

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.

Keine Kommentare:

Kommentar veröffentlichen

OpenWRT 19 und ein Edimax USB WLAN Adapter

Ich kam gerade in die Verlegenheit einen Rapsberry B+ (das erste Modell) als Open-WRT Router für Outdoor neu zu installieren und wollte dabe...