Docker auf Raspberry Pis. Technische Grundlagen und Prototyping


Seminararbeit, 2021

28 Seiten, Note: 1,7


Leseprobe

Inhaltsverzeichnis

Abkürzungsverzeichnis

Abbildungsverzeichnis

Tabellenverzeichnis

1 Einleitung
1.1 Problemstellung
1.2 Zielsetzung
1.3 Vorgehensweise

2 Theoretische Grundlagen
2.1 Container Technologie
2.2 Container Orchestrierung
2.3 Docker Swarm

3 Prototyp einer Docker Infrastruktur auf dem Raspberry Pi
3.1 Prototyping
3.2 Komponenten
3.3 Umsetzung
3.4 Kritische Würdigung

4 Schlussbetrachtung

Literaturverzeichnis

Quellenverzeichnis

Anhang

Abkürzungsverzeichnis

Abbildung in dieser Leseprobe nicht enthalten

Abbildungsverzeichnis

Abbildung 1: Architektur Virtualisierung und Container

Abbildung 2: Muster der Prototypen

Abbildung 3: Raspberry Pi 3B+

Abbildung 4: Architektur Docker

Abbildung 5: Docker Images auf dem Raspi

Abbildung 6: Apache Server im Container auf dem Raspi

Abbildung 7: Raspi-Docker-Architektur

Tabellenverzeichnis

Tabelle 1: Anwendungsgebiet nach Technologie

Tabelle 2: Eigenschaften Docker Swarm

Tabelle 3: Komponenten Docker Architektur

Tabelle 4: Docker Images auf dem Raspi

1 Einleitung

1.1 Problemstellung

Für die elektronische Datenverarbeitung werden unterschiedlichste Ressourcen benötigt. Der Bedarf variiert je nach Komplexität der Funktion oder Anwendung. Damit diese Ressourcen so effizient wie möglich genutzt und horrende Kosten vermieden werden können, muss der Bedarf optimal ermittelt und realisiert werden können. Der Wert einer Applikation steigt im Zeitalter der Cloud vom Vernetzungs- bzw. Verbreitungsgrad.1 Das daraus entstehende Problem ist demnach die Ermittlung einer effizienten Lösung, für die Bereitstellung von skalierbaren und verteilten Anwendungssystemen.

1.2 Zielsetzung

Das Ziel der vorliegenden Arbeit ist es, einen Raspberry Pi Prototyp zu entwickeln welcher die Container-Technologie nutzt. Die sich daraus ableitende Forschungsfrage lautet: „Ist es möglich skalierbare verteilte Anwendungen auf einem Raspberry Pi durch nutzten der Container-Technologie bereitzustellen?“ Die Forschungsfrage soll durch das Ergebnis, ob es möglich ist skalierbare verteilte Anwendungen auf einem Raspberry Pi zu nutzen, beantwortet werden.

1.3 Vorgehensweise

Die vorliegende Arbeit soll zeigen, wie skalierbare verteilte Anwendungen mittels Einsatzes von Container-Technologien am Beispiel eines Raspberry Pi Prototyps umgesetzt werden können.

In Kapitel 2 werden deshalb zunächst die Grundlagen zur Container-Technologie vermittelt. Die Begriffe und Definitionen, welche für den weiteren Verlauf der Arbeit essenziell sind, werden zu Beginn erläutert. Ebenso wird auf das Thema Container Orchestrierung eingegangen. Darauf folgt die Beschreibung eines Docker Swarm.

Im Anschluss wird in Kapitel 3 das Anwendungsbeispiel vorgestellt. Hierzu wird zuerst definiert was unter Prototyping zu verstehen ist. Danach werden alle nötigen Komponenten erläutert, gefolgt von der technischen Umsetzung. Das Kapitel wird durch die Kritische Würdigung abgeschlossen, enthalten sind Abbildungen.

Kapitel 4 widmet sich der Schlussbetrachtung und der Beantwortung der Forschungsfrage gegenüber der Verwendung von Container-Technologien am Anwendungsbeispiel. Final folgt ein Fazit.

2 Theoretische Grundlagen

2.1 Container Technologie

Die Container Technologie beschreibt ein Vorgehen zum Verpacken und Ausführen von beispielsweise Linux- und Windows-Anwendungen, die in verschiedenen Umgebungen in der Cloud oder lokal eingesetzt werden können.2 Hierbei wird eine isolierte, schlanke Umgebung bereitgestellt, in welcher Apps einfacher entwickelt, verwaltet sowie bereitgestellt werden können.3 Die Container können hierdurch schnell gestartet und beendet werden, dies eignet sich daher ideal für Apps, welche sich schnell an einem sich ändernden Bedarf anpassen müssen.4 Dies geht damit einher, dass alle zur Ausführung benötigten Dateien über ein eigenes Image bereitgestellt werden.5 Diese sind von der Entwicklung über die Testphase bis hin zur Produktion stehts konsistent und portierbar.6 Neben der Container-Technologie lassen sich durch Virtualisierung auf einem einzelnen physischen Hardware-System mehrere dedizierte oder simulierte Ressourcen bereitstellen.7 Im Wesentlichen teilen sich Container den gleichen Betriebssystem-Kernel, die Anwendungsprozesse werden aber vom Rest des Systems isoliert.8 Wohingegen die Virtualisierung das gleichzeitige Ausführen mehrerer Betriebssysteme auf einem einzigen Hardware-System ermöglicht.9 Ein Container basiert auf dem Kernel, allerdings werden nicht alle Dienste und APIs bereitgestellt, welche eine App ausführen muss.10 Dies wird durch Systemdateien (Bibliotheken) realisiert.11 Diese können wiederum in einem Basisimage vereint werden, welches als grundlegende Ebene dient und stellen somit eine Sammlung von in Schichten organisierter Dateien dar.12 Die folgende Abbildung illustriert den wesentlichen Architekturunterschied zwischen Containern und Virtualisierung (Virtuellen Maschinen).

Abbildung 1: Architektur Virtualisierung und Container13

Quelle: eigene Darstellung.

Abbildung in dieser Leseprobe nicht enthalten

Wie in Abbildung 1 zu sehen, wird bei der Containerisierung nur die App(s) und alle zum Ausführen erforderlichen Dateien paketiert.14 Des Weiteren werden je nach Anwendungsfall zusätzliche Funktionen paketiert, welche bestimmte Aufgaben (Microservices) ausführen.15 Hierbei werden Container in Megabyte gemessen was ein verschieben in andere Umgebungen durch die geringe Größe und ein gemeinsam genutztes Betriebssystem vereinfacht.16 Virtuelle Maschinen werden im Gegensatz zu den Containern in Gigabyte gemessen und enthalten ihr eigenes Betriebssystem auf welchem mehrere ressourcenintensive Funktionen auf einmal ausgeführt werden können.17 Hierdurch können VMs Server, Desktops, Netzwerke oder Betriebssysteme aufteilen, duplizieren, emulieren und abstrahieren.18 Des Weiteren kommt in der Virtualisierung der Hypervisor zum Einsatz, welcher Ressourcen von ihren physischen Geräten trennt, partitioniert und können von VMs reserviert werden.19 Folgende Tabelle illustriert die jeweilige Technologie nach Anwendungsgebiet:

Tabelle1: Anwendungsgebiet nach Technologie20

Quelle: eigene Darstellung.

Abbildung in dieser Leseprobe nicht enthalten

2.2 Container Orchestrierung

Die Automatisierung vom Deployment, der Verwaltung, der Skalierung und der Vernetzung von Containern erfolgt durch die Orchestrierung.21 Beide Komponenten können auf beliebigen Umgebungen eingesetzt werden, z. B. in der Cloud oder On-Premise.22 Die Orchestrierung ermöglicht die Bereitstellung einer Anwendung ohne besondere Anpassungen für verschiedene Umgebungen, dies ermöglicht beispielsweise eine vereinfachte Orchestrierung von Storage, Services und Networking durch Microservices in Containern.23 Folgende Aufgaben können durch die Orchestrierung von Containern automatisiert werden:

- Deployment und Provisionierung,
- Planung und Konfiguration,
- Zuweisung von Ressourcen,
- Verfügbarkeit von Containern,
- Entfernung oder Skalierung von Containern zur gleichmäßigen Anpassung des Workloads,
- Traffic Routing und Load balancing,
- Überwachung des Containerzustands
- Sicherung von Interaktionen zwischen Containern und
- Konfiguration von Anwendungen basierend auf dem Container, in welchem sie ausgeführt werden.24

Die Konfiguration einer Anwendung erfolgt entweder durch eine YAML- oder JSON- Datei, welche dem Konfigurationsmanagement Tool mitteilt, wo sich die Container Images befinden, wie ein Netzwerk eingerichtet wird und wo Logdateien gespeichert werden sollen.25 Das Management Tool plant bei jedem Deployment eines neuen Containers die Bereitstellung in einem Cluster anhand der definierten Einschränkungen bzw. Anforderungen.26 Ebenso wählt das Tool den passenden Host und überwacht den Lifecycle des Containerns basierend auf den angegebenen Spezifikationen der Erstellungsdatei.27

2.3 Docker Swarm

Ein Docker Swarm besteht aus mehreren Docker Hosts, die im Schwarmmodus ausgeführt werden.28 Ein Docker Host kann als ein Manager (zur Verwaltung der Mitgliedschaft und Delegation) oder ein Workerknoten (die Aufgaben ausführen) fungieren.29 Im Schwarmmodus übernimmt Docker zudem die Überwachung und Verwaltung von bereits definierten und laufenden Diensten (Containern), fällt beispielsweise ein Worker aus, plant Docker die Aufgaben dieses Knotens für einen anderen Knoten ein.30 Auf einem einzelnen oder verteilten physischen Computer oder Server können mehrere Konten ausgeführt werden.31 Des weiteren können Konfigurationen eines Dientes, einschließlich der Ressourcen und Netzwerke mit denen er verbunden ist, geändert werden, ohne dabei den Dienst manuell neu starten zu müssen.32 Auf einem Docker Host können Swarmservices und Stand-Alone Container ohne Einschränkungen parallel ausgeführt werden.33 Im Wesentlichen ist hierbei nur zwischen der Verwaltung zu differenzieren, während Stand-Alone Container auf jedem beliebigen Daemon gestartet werden können, kann ein Swarm nur von einem Swarm-Manager verwaltet werden.34 Die Docker Daemons können an einem Swarm als Worker, Manager oder als beides partizipieren.35 Um den gewünschten Zustand eines Swarms aufrecht erhalten zu können, führen Managerknoten Clusterung- und Orchestrierungsfunktionen aus, wobei unter mehreren Managerknoten ein einzelner Master Manager Knoten, automatisch oder manuell, ausgewählt wird.36 Die von den Managerknoten delegierten Aufgaben werden von den Worker empfangen und ausgeführt.37 Der Worker bereitet dabei ständig an den Managerknoten über den Zustand der delegierten und ausgeführten Aufgabe.38 Folgende Tabelle illustriert die Eigenschaften von Docker Swarm.

Tabelle2: Eigenschaften Docker Swarm39

Quelle: eigene Darstellung.

Abbildung in dieser Leseprobe nicht enthalten

3 Prototyp einer Docker Infrastruktur auf dem Raspberry Pi

3.1 Prototyping

Prototypen werden dazu genutzt, um bei einer Soft- oder Hardware Entwicklung frühzeitige kritische Aspekte aufzeigen zu können.40 Ebenso können Diskrepanzen bzgl. der Vorstellung der Anwender sowie der Realisierungsoptionen zeitnah abgeglichen werden, da kritische Funktionen unter realitätsnahen Umständen realisiert werden können.41 Dies kann auf die Funktionsweise bezogen schrittweise (evolutionäres Prototyping) oder bezogen auf die Realisierungsoption ausprobiert und verglichen werden (experimenteller Prototyping).42 Durch den Prototypen erhalten Entwickler und Anwender ein Gefühl für das System. Zum einen werden die Anforderungen der Anwender klar die die Entwickler veranschaulicht, zum anderen wird den Anwendern klar dargestellt was am Ende des Projektes realisiert werden kann.43 Ein Prototyp stellt dabei keine ad-hoc Vorgehensweise dar, vielmehr wird zur Evaluierung ein systematisierter und ablauffähiger Demonstrator erstellt.44 Es drei verschiedene Arten von Prototypen:

[...]


1 Vgl. Büst, R. (2016), Container-Technologie, https://t3n.de/magazin/ueber-container-technologie-wissen-musst-docker-gehts-240047/

2 Vgl. Microsoft (2019), Windows und Container, https://docs.microsoft.com/de-de/virtualization/windowscontainers/about/

3 Vgl. ebd.

4 Vgl. ebd.

5 Vgl. RedHat (o. J.), Linux-Container, https://www.redhat.com/de/topics/containers/whats-a-linux-container

6 Vgl. ebd.

7 Vgl. ebd.

8 Vgl. ebd.

9 Vgl. ebd.

10 Vgl. Microsoft (2019), Windows und Container, https://docs.microsoft.com/de-de/virtualization/windowscontainers/about/

11 Vgl. ebd.

12 Vgl. ebd.

13 In Anlehnung an: RedHat (o. J), Virtualisierung, https://www.redhat.com/de/topics/containers/whats-a-linux-container

14 Vgl. RedHat (o. J.), Vergleich: Container oder VMs?, https://www.redhat.com/de/topics/containers/containers-vs-vms

15 Vgl. ebd.

16 Vgl. ebd.

17 Vgl. ebd.

18 Vgl. ebd.

19 Vgl. RedHat (o. J.), Was ist Container-Orchestrierung?, https://www.redhat.com/de/topics/containers/what-is-container-orchestration

20 In Anlehnung an: RedHat (o. J.), Vergleich: Container oder VMs?, https://www.redhat.com/de/topics/containers/containers-vs-vms

21 Vgl. RedHat (o. J.), Was ist Container-Orchestrierung?, https://www.redhat.com/de/topics/containers/what-is-container-orchestration

22 Vgl. ebd.

23 Vgl. ebd.

24 Vgl. ebd.

25 Vgl. ebd.

26 Vgl. ebd.

27 Vgl. ebd.

28 Vgl. Docker (o. J.), What is a swarm?, https://docs.docker.com/engine/swarm/key-concepts/

29 Vgl. ebd.

30 Vgl. ebd.

31 Vgl. ebd.

32 Vgl. ebd.

33 Vgl. ebd.

34 Vgl. ebd.

35 Vgl. ebd.

36 Vgl. ebd.

37 Vgl. ebd.

38 Vgl. ebd.

39 In Anlehnung an: Docker (o. J.), Swarm, https://docs.docker.com/engine/swarm/

40 Vgl. Kuhrmann, M. (2012), Prototyping, http://www.enzyklopaedie-der-wirtschaftsinformatik.de/lexi-kon/is-management/Systementwicklung/Vorgehensmodell/Prototyping/index.html

41 Vgl. ebd.

42 Vgl. ebd.

43 Vgl. ebd.

44 Vgl. ebd.

Ende der Leseprobe aus 28 Seiten

Details

Titel
Docker auf Raspberry Pis. Technische Grundlagen und Prototyping
Hochschule
FOM Hochschule für Oekonomie & Management gemeinnützige GmbH, Stuttgart
Note
1,7
Autor
Jahr
2021
Seiten
28
Katalognummer
V1151596
ISBN (eBook)
9783346546517
ISBN (Buch)
9783346546524
Sprache
Deutsch
Schlagworte
Raspberry Pi, Docker, Container, Virtualisierung
Arbeit zitieren
Andreas Schurr (Autor:in), 2021, Docker auf Raspberry Pis. Technische Grundlagen und Prototyping, München, GRIN Verlag, https://www.grin.com/document/1151596

Kommentare

  • Noch keine Kommentare.
Im eBook lesen
Titel: Docker auf Raspberry Pis. Technische Grundlagen und Prototyping



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden