Labor für Kraftfahrzeugmechatronik
youtube

  • Start
  • Mechlab@UPC
    • Video-Tutorials und Messdaten
    • Matlab-Sprechstunde
  • Laboratory
    • Prüffeld für automatisierte und vernetzte Fahrfunktionen
    • Laborleitung
    • Mitarbeiter
      • Christopher Dunkel
      • Dirk Engert
      • Marcus Degenkolbe
  • Projects
    • Kreuzungsassistent
    • Bewertungsverfahren für FAS
  • Thesis
  • Blog



GEwAF’s Docker Integration

August 13, 2019
by Toralf Trautmann
Docker, GEwAF, Matlab, ROS, Simulation, Simulink
0 Comment
Abb. 1: Docker®-Logo

Zu Docker

Docker® ist eine Open-Source-Software, mit der Anwendung und deren zugehörige Abhängigkeiten in ein „Image“ verpackt (gebaut) werden können. Diese Images können dann vom eigentlichen (Betriebs-) System getrennt ausgeführt und validiert werden.

Begriffsklärung

Bevor eine Beschreibung der Integration von GEwAF als Docker-Anwendung ausgeführt wird, ist es aufgrund der unterschiedlichen Bezeichung innerhalb der Docker-Umgebung sinnvoll vorab einige wiederkehrende Begriff zu erläutern:

  • Ein Image ist eine bereits kompilierte und daher direkt ausführbare Instanz, die bereits alle Abhängigkeiten beinhaltet, die die auszuführende Anwendung benötigt.
  • Ein Container ist eine laufende Instanz eines Images.
  • Ein Repository ist eine Sammlung von Images (sowohl online als auch offline bzw. lokal).
  • Ein Registry ist eine Sammlung von Repositories.

Wie funktioniert Docker?

Docker basiert auf der Erstellung und Ausführung der sogenannten Images. Diese beinhalten die auszuführende Anwendung (die sehr spezifisch oder auch sehr umfangreich sein kann) und alle Abhängigkeiten, die für die Ausführung der Anwendung notwendig sind, beinhaltet, sodass eine systemunabhängige Ausführung gewährleistet ist. Vorausgesetzt ist dabei immer, dass Docker auf dem Host-System installiert ist. Durch das Bauen eines Containers wird die implementierte Anwendung vom Rest des (Betriebs-) Systems isoliert und kann so systemübergreifend validiert werden.

Docker erlaubt das Entwerfen der Images, die Speicherung lokal oder online im Docker-Hub und die Ausführung der Anwendung durch Starten des Images.

Abb. 2: Docker Systemarchitektur

Docker ist eine Terminal-/Kommandozeilen-basierte Anwendung. Zum Erstellen eines Images wird ein entsprechendes Dockerfileaufgesetzt, dass mit dem Befehl

docker build --tag=imagename .
eingelesen wird. Das Image wird daraufhin mit diesen Informationen kompiliert und kann folgend mit
docker run imagename
ausgeführt werden.

Die Docker-Systemarchitektur ist von offizieller Seite wie in Abbildung 2 dargestellt definiert. Auf dem gewählten Betriebssystem („Host Operating System) wird Docker verwendet um die entsprechenden Anwendungen (hier: App A-F) auszuführen. Auf die GEwAF-Co-Simulation übertragen entsprechen die Apps beispielsweise den Simulationsinstanzen (s. Abb 3, unten).

Intension Docker-Nutzung für

Mit ROS ist bereits der erste Schritt zu einer Dezentralisierung erreicht. Auf diese Weise kann bereits, durch Festlegung welches Rechnersystem einen ROS-Knoten ausführt, ein verteiltes Netzwerk aufgebaut werden. Durch die Verwendung von Docker wird diese Herangehensweise weiter ausgebaut. Die Anwendungen werden systemunabhängig standardisiert und können damit noch einfacher auf neue Hardwarekomponenten übertragen und dort ausgeführt werden. Zudem wird die mehrfache Ausführung der gleichen Anwedung vereinfacht.

Wesentliche Vorteile bei der Nutzung von Docker in Verbindung mit der GEwAF-Co-Simulation lassen sich wie folgt zusammenfassen:

  • Skalierbarkeit:
  • Durch die Nutzung von ROS und dessen Kommunikatinossystem ist die GEwAF-Co-Simulation bereits grundsätzlich komfortable (generisch) ausbaubar. D.h. neue Anwendung in der ROS-Umgebung können einfach in die Kommunikation eingebunden werden. Für die Vervielfachung der Einbindung der gleichen Software ist es durch Docker nochmals einfacher eine Vervielfachung der einzubindenen Instanzen zu erreichen. So kann ein ROS-Knoten als Image erstellt werden, um dann als Container vielfach in einer Docker-Session (parallel) angewandt werden.
  • Portierbarkeit
  • Das Image kann systemunabhängig übertragen und ausgeführt werden. Alle Abhängigkeiten sind innerhalb des Images/des Containers eingebunden. Einzige Notwendigkeit ist die Installation von Docker selbst. Komplikationen hinsichtlich der unterschiedlichen Betriebssysteme, die die Projektpartner innerhalb GEwAF nutzen (Windows & Linux) können so gemieden werden.
  • Portabilität
  • Durch die mäßige Größe und verschachtelte Verwendung bereits bestehender Images/Container (während des Kompilierungsprozesses) und der Verfügbarkeit via Docker-Hub (Online-Verwaltung der Repositories), können die Container einfach online ausgetauscht und aktualisiert werden.
  • Test-/Validierungsmöglichkeiten
  • Die Container laufen isoliert vom Rest des Host-Betriebssystems, d.h. wie bereits zuvor erwähnt, sind alle Abhängigkeiten pro Image/Container in ebendiesen vorhanden, sodass sie nicht auf Resourcen des Host-Betriebssystems zugreifen. So kann die Funktionalität der Anwendung im Hinblick auf Vollständigkeit der benötigten (System-)Ressourcen, Unabhängigkeit und grundlegender Erfüllung der Funktionsaufgabe besser validiert werden.

Integration GEwAF –> Docker

Anwendungsansätze

Grundsätzlich gibt es mehrere Möglichkeiten die gewünschten Docker Images als Container auszuführen, u. a.: das Starten einzelner Instanzen durch Befehlseingabe (Kommandozeilen-Einträge) oder durch das Verwenden einer compose Datei, die zum Bauen eines Anwedungsverbundes verwendet wird.

Container einzeln ausführen

Grundsätzlich lassen sich einzelne Anwendung durch den simplen Terminalbefehl

docker start imagename
starten. Der Container kann durch
docker stop imagename
wieder beendet werden. Diese Weise ist für experimentelle Zwecke oder kleinere Projekte sehr sinnvoll, da so Container dem laufenden Prozess hinzugefügt oder entfernt werden können. Hierfür wird zunächst ein Dockerfile benötigt, dass die Anwendung und ihre Abhängigkeiten beschreibt, sodass ein ausführbares Image generiert werden kann.

Container zusammengeführt ausführen

Durch Docker’s compose Funktion kann durch nur einen Befehl eine ganze Reihe von Parameter eingestellt und Anwendungen gestartet werden. Hierzu muss eine docker-compose.yml-Datei im root-Verzeichnis des Docker Verzeichnisses existieren. Mit dem Befehl

docker-compose up -d
wird diese Datei eingelesen und die entsprechenden Images werden gestartet. Sind diese lokal noch nicht vorhanden, wird automatisch ein Download gestartet und der Container anschließend gebaut. Für eine vollständige compose-Dateien-Struktur und Beispiele folge diesem Link.

GEwAF-Komponenten als Docker-Container

Die Erstellung von Container wurde zunächst für ausgewählte Komponenten der GEwAF-Co-Simulation ausgeführt. Entsprechend Abb. 3 sind das die Instanzen für SUMO und den Synchronisationsmaster sowie der zentrale ROS-Befehl (roscore) zur Etablierung der Kommunikationsplattform (schwarze Umrahmung).

Abb. 3: Kommunikationsübersicht GEwAF-Co-Simulation

Das ECU-Test-Interface ist als externe und übergeordnete Instanz für die Initialisierung und Automatisierung der Co-Simulation verantwortlich und daher nicht direkt in die Docker-Umgebung eingebunden.
MATLAB/Simulink sowie ADTF sind eigenständige Simulationen mit abgeschlossener Laufzeitumgebung und werden somit auch als externe Anwendungen der Co-Simulation zugeschaltet.
Die Einbindung des Datamasters erfolgt in einem nächsten Schritt.

Weitere Informationen

  • Liste weiterer (grundlegender) Kommandozeilen-Befehle: https://docs.docker.com/engine/reference/commandline/docker/
  • Docker: https://www.docker.com/
  • SUMO: https://sumo.dlr.de/wiki/Simulation_of_Urban_MObility_-_Wiki
  • ROS: http://www.ros.org/

Quellenangaben

Abb. 1: Whale-Logo is a Docker® Trademark (https://www.docker.com/)
Abb. 2: Docker System-Architektur: https://www.docker.com/resources/what-container

Autor
Social Share

    Projekte

    • Methodik zur Bewertung der Übertragungs- und Datensicherheit in Fahrzeug-Ad-Hoc Netzwerken
    • Lane Clustering using Filtered LiDAR Point Clouds
    • Kurzbeschreibung
    • Kreuzungsassistent
    • Bewertungsverfahren für FAS
    • Start
    • Mechlab@UPC
      • Video-Tutorials und Messdaten
      • Matlab-Sprechstunde
    • Laboratory
      • Prüffeld für automatisierte und vernetzte Fahrfunktionen
      • Laborleitung
      • Mitarbeiter
        • Christopher Dunkel
        • Dirk Engert
        • Marcus Degenkolbe
    • Projects
      • Kreuzungsassistent
      • Bewertungsverfahren für FAS
    • Thesis
    • Blog

    Archiv

    Intern

    Autoren-Login
    Wiki

    Impressum und Kontakt

    Hochschule für Technik & Wirtschaft
    Labor für KFZ Mechatronik
    Prof. Dr. rer. nat. Toralf Trautmann
    Friedrich-List-Platz 1
    01069 Dresden


    Die Fakten sprechen für uns.
    © Copyright 2019 | mechlab.de