Installation über Docker

Einführung

Docker erlaubt das Verpacken von Applikationen inklusive aller Abhängigkeiten (z.B. Python) in einem Container. Vergleichbar vielleicht zu einer APK-Datei auf Android. Viele NAS Hersteller verwenden Docker genau für diesen Zweck, so dass SmartHomeNG auf einem NAS sozusagen aus dem App-Store geladen werden kann.

Dabei ist jeder Container für sich abgeschlossen und vom Host-System (das System auf dem Docker läuft) isoliert. Benötigt z.B. eine Applikation zwingend Python 3.5.1 und die andere Python 3.4.1, so ist dies in unterschiedlichen Containern ohne weiteres möglich. Dies ähnelt auf dem ersten Blick vielleicht einer Virtualisierung, doch ist ein wesentlicher Unterschied, dass die Applikation direkt auf der Hardware des Host-Systems läuft - nur isoliert.

Darüber hinaus, bzw. dadurch ist die Installation einer Anwendung ähnlich einfach, wie auf dem Handy. Für SmartHomeNG reicht z.B. ein

docker pull henfri/smarthome-ng

oder für den knxd

docker pull henfri/knxd

Danach muss die jeweilige Applikation natürlich noch gestartet werden. Hierbei ist zu beachten, dass die jeweilige Applikation zunächst vollkommen abgeschottet ist. Nur wenn Ports (Netzwerk) oder Verzeichnisse (Massenspeicher) in den Container abgebildet werden, sind diese Ports vom Host-System im Container sichtbar.

Dies geschieht über die Parameter -p und -v

docker run henfri/smarthome-ng -p 123:456

Würde den Container starten und den Port 123 vom Host auf den Port 456 im Container mappen. Über den Parameter -p können auch Geräte (/dev/*) übergeben werden.

Docker-Compose

Für unsere Belange werden mehrere Container verwendet:

  • smarthome-ng

  • knxd

  • owfs

  • smartvisu

Damit diese in der richtigen Reihenfolge gestartet werden, gibt es Docker-Compose. In der docker-compose.yml. Hier werden dann auch alle Mappings (Ports und Verzeichnisse) angegeben.

Anleitung

Eine Anleitung für die Installation gibt es hier (Englisch) und hier (Deutsch)