FBR im Docker als Standalone Builder

Um auf einer beliebigen Maschine ein fbr zu übersetzen, stehen Docker-Images zur Verfügung.

Vorraussetzungen:

  • ein svn checkout 
  • installiertes docker
  • ausreichend Speicherplatz auf dem Wirtsystem

Nomenklatur:

Damit es ein wenig einfacher wird, zu identifizieren was auf dem Host und was im Image passieren soll, ein wenig farbliche Unterscheidung:

  • alles was Rot ist wird auf dem Host erledigt bzw. befindet sich auf dem Host
  • alles was Grün ist wird im Docker gemacht bzw. befindet sich im Docker

HauZu oder wie bekomme ich den Container ans laufen:

Das Image hat die Möglichkeit Verzeichnisse aus dem Wirtsystem zu mounten/mappen. Das sind im Moment:

  • /data/shared/fli4l/.fbr
  • /data/work

Auf diese Verzeichnisse lassen sich dann Verzeichnisse aus dem Wirt mappen. Die beiden Verzeichnisse müssen vor dem Start des Docker Containers angelegt werden. (Für fli4l-Builder sollten sie dem User jenkins und der Gruppe fleis gehören)

Im Image gibt es einen User Namens "developer", es empfiehlt sich diesen zu nutzen.

Anlegen und starten des Containers:


docker run \
	--name fbr \
	-v /home/schmetterling/.fbr:/data/shared/fli4l/.fbr \
    -v /home/schmetterling/fli4l/svn/branches/4.0/trunk:/data/work \
    -it nettworksevtooling/fli4l-buildroot-developer:latest

Zur Erklärung hier einige Details und Informationen zum DockerAufruf:

  • --name fbr ist der Name den der Container bekommt (kann auch anders heißen)
  • -v /home/schmetterling/.fbr:/data/shared/fli4l/.fbr ist das erste Mapping (alles vor dem Doppelpunkt ist der Pfad auf dem Wirt, danach der im Container)
  • -v /home/schmetterling/fli4l/svn/branches/4.0/trunk:/data/work das Zweite
  • -it startet den Container im interaktiven Modus (-i) und öffnet ein Pseudo-Terminal (-t)
  • nettworksevtooling/fli4l-buildroot-developer:latest ist das Image, welches verwendet werden soll. Es wird automatisch von Dockerhub geladen und wird von uns dort gepflegt

Das Verzeichnis /data/shared/fli4l/.fbr muss ggf. von Hand angelegt und die Rechte angepasst werden.


  • Auf das Verzeichnis wo das fbr hinterher liegen soll, muss der User im Container Schreibrechte haben (ich habe 777 gewählt)
  • Auf das Verzeichnis wo der Checkout liegt wenigstens Leserechte!

Der Developer-User im Container hat UID/GID 1011/1011.


Damit sollte dann nach kurzer Zeit der Container laufen...

Was noch zu tun ist:

einloggen am Container per ssh:

ssh developer@172.17.0.2

Passwort: developer

FBR-Bau starten:

natürlich im Docker...

cd /data/work/src/packages/src/src/fbr
FBR_ARCH=x86_64 FBR_TIDY=n ./fbr-make world

damit baut es ein x86_64 FBR...

Das Ganze habe ich in einer Screen-Session laufen lassen, damit die Verbindung zum Host mal abreißen kann...

Jetzt braucht es nen Kaffee und ne Runde Geduld...

Und was ist mit 3.10?!

Für das FBR von fli4l 3.10 braucht es den fli4l-3.10 container, damit der Bau erfolgreich ist. Auch dafür haben wir einen developer Container unter dem Namen fli4l-3.10-buildroot-developer. Dieser kann für die 3.10 (Weiter-)Entwicklung verwendet werden.