Konzept zur Erstellung eines kompakten ARMv7-kompatiblen Docker-Images für eine REST-API zur Steuerung von Docker-Containern des Hostsystems

Ismail Sastim, Juli 2022
Bachelorstudiengang – Technische Informatik

Im Rahmen eines Forschungsprojekts soll ein Kleincomputer eine REST-API zur Verfügung stellen, welche mit vorgegebenen Operationen den lokalen Docker-Dienst verwalten kann. Dieser Kleincomputer verwendet einen ARMv7-Prozessor und hat mit insgesamt 2,8 GB beschränkte Speicherkapazitäten. Die REST-API ist eine Python-Anwendung und soll selber als Docker-Container betrieben werden. Für diesen Sachverhalt wird ein Konzept gesucht, um einem Container ohne Zugangsdaten wie Passwörter zum Hostsystem das Ansteuern des eigenen Docker-Diensts zu ermöglichen. Außerdem wird ein Image der REST-API benötigt, welches zum einen auf der ARMv7-Plattform lauffähig ist, zum anderen minimalen Speicherverbrauch aufweist. In dieser Bachelorarbeit werden mithilfe von Literatur und Softwareprodukten verschiedene Lösungsansätze erkundet, experimentiert und verglichen. Das Resultat ist ein funktionierender prototypischer Demonstrator der REST-API, welche den Docker-Dienst des Hosts ohne Zugangsdaten ansteuern kann und insgesamt unter 250 MB Speicher verbraucht. Die REST-API selbst hat keinen direkten Zugriff auf den Docker-Dienst. Sie leitet die Anfragen an einen zusätzlichen separaten Container weiter, welcher mithilfe von Unix-Domain-Sockets den Docker-Dienst ansteuern kann. Die Images wurden mit dem BuildXPlugin für Docker erstellt. Zur Minimierung wurden verschiedene bewährte Praktiken zum Erstellen von Docker-Images angewandt. Ergänzend wurde zudem das PyInstaller-Tool verwendet, mit dem sich Python-Anwendungen bündeln lassen. Durch einer geeigneten Softwarearchitektur und Unix-Domain-Sockets lassen sich solche Anwendungsfälle realisieren. Docker bietet Features, um Images für andere Zielplattformen zu erstellen und zu minimieren. PyInstaller ist im Fall von Python-Anwendungen ein komplementäres Tool, was dies unterstützt.