Docker ist eine Container-Technologie, mit der Anwendungen inklusive aller benötigten Bibliotheken und Abhängigkeiten in einer isolierten Umgebung laufen. Dadurch lassen sich Anwendungen unabhängig vom Betriebssystem installieren und ausführen.

Steuerungs-, Edge- oder IIoT-Anwendungen können sauber voneinander getrennt und reproduzierbar auf dem RevPi betrieben werden. Mehrere Anwendungen können parallel laufen, ohne sich gegenseitig zu beeinflussen. Updates oder Rollbacks lassen sich schnell durchführen, indem ein neuer Container gestartet wird.

Docker erleichtert außerdem die Entwicklung und Verteilung von Anwendungen, da dieselbe Container-Umgebung auf Entwicklungsrechnern, Testsystemen und dem RevPi identisch läuft. Dadurch eignet sich Docker besonders für modulare Edge- und IIoT-Architekturen auf dem RevPi.

Docker installieren #

Um Docker auf dem RevPi zu installieren, kannst du der Anleitung im Docker Manual Install Docker Engine on Debian folgen.

Alternativ kannst du die docker.io Pakete von Debian verwenden. Sie benötigen keine zusätzliche Paketquelle und sind ggf. schneller installiert.

Auf RevPi I/O-Module zugreifen #

Die RevPi I/O-Module werden über den piControl Treiber bereitgestellt. Dieser stellt ein Prozessabbild der I/O-Werte bereit, das über die Gerätedatei /dev/piControl0 angesprochen wird. Anwendungen können über diese Datei Eingänge lesen oder Ausgänge schreiben. Damit ein Docker-Container auf die I/Os zugreifen kann, muss dieses Device beim Start des Containers in den Container durchgereicht werden.

Zusätzlich kann es erforderlich sein, Zugriff auf die config.rsc zu ermöglichen, z. B. für revpi-modbus oder revpimodio2.

Voraussetzungen #

✓ RevPi DIO ist an dein Basismodul angeschlossen

✓ Externe LED-Signallampe ist an den Pin OUT 1 des RevPi DIO angeschlossen

✓ RevPi System ist in PiCtory konfiguriert

Docker-Compose-Datei erstellen #

▷ Lege docker-compose.yml an, um auf /dev/piControl0 zuzugreifen, z. B.:

services:
  pibridge-tester:
    image: debian:bookworm-slim
    container_name: revpi_pibridge_test

    devices:
      - "/dev/piControl0:/dev/piControl0"

    volumes:
      - "/usr/bin/piTest:/usr/bin/piTest"
      # Für den Fall, dass man die PiCtory Konfiguration benötigt (z. B. revpi-modbus)
      - "/etc/revpi/config.rsc:/etc/revpi/config.rsc"

    command: bash -c "piTest -w O_1,1
      && sleep 3
      && piTest -w O_1,0"

▷ Führe docker-compose.yml aus:

sudo docker compose up

❯ Die LED leuchtet für 3 Sekunden.

❯ Folgendes wird ausgegeben:

[+] up 1/1
 ✔ Container revpi_pibridge_test Created                                                                                                                                                   0.2s
Attaching to revpi_pibridge_test
revpi_pibridge_test  | Set bit 0 on byte at offset 101. Value 1
revpi_pibridge_test  | Set bit 0 on byte at offset 101. Value 0
revpi_pibridge_test exited with code 0

Weitere Ressourcen #