Docker einsetzen auf dem Raspberry Pi

© Mihai Andritoiu

Praktisch verpackt

Packen Sie wichtige Anwendungen einfach in einen Container, den Sie komfortabel mit Docker verwalten.

Seit 2013 hilft die Software Docker [1] dabei, Container zu verwalten, und sorgt so für einen hohen Automatisierungsgrad im Rechenzentrum. Wer sich für die Technologie interessiert und sie mit dem sparsamen RasPi kombiniert, erhält eine flexible Spielwiese für zu Hause und unterwegs.

Anders als typische virtuelle Maschinen enthalten Container kein eigenes Betriebssystem und starten so prinzipiell innerhalb von wenigen Augenblicken. Meist verfrachten Administratoren einzelne Anwendungen in Container, wie etwa Web- oder Fileserver. Durch die Möglichkeit, den Verbrauch an Ressourcen pro Container zu reglementieren, kommen sie häufig bei Hostern zum Einsatz.

Zudem stellt die Isolation eines Containers vom Rest des Systems eine große Hürde dar, wenn Angreifer über einen Prozess Zugriff auf das System erhalten wollen. Container und Docker sind in der Wahrnehmung vieler mittlerweile eng miteinander verwoben, obwohl Container und die zugrunde liegenden Konzepte schon lange Teil der IT-Landschaft sind. Näheres dazu erklärt der Kasten "Container im Rückblick".

Container im Rückblick

Abstrakt formuliert stellt ein Container eine isolierte Umgebung auf einem System bereit. Unter Linux sorgt der Kernel dafür, dass der Container in einem eigenen Namensraum lebt und dadurch vom Rest der Vorgänge auf dem System nichts mitbekommt. Aus Sicht des Containers findet dagegen ein voller Zugriff auf das System und die Hardware statt. Dank der Kernel Namespaces [13] besitzt der Container ein eigenes Root-Dateisystem und eigene Umgebungen für Prozesse, Netzwerk und andere Ressourcen. Durch Cgroups [14] stellt der Kernel sicher, dass ein Container dedizierte Ressourcen erhält, wie CPU und Arbeitsspeicher.

Die ersten Ansätze für Container reichen bis Ende der 1970er-Jahre zurück: Damals war es lediglich möglich, Change-Root-Umgebungen [15] auf Unix-Systemen einzurichten. Das Unix-Derivat BSD übernahm das Konzept etwa 1982, ehe der Ableger FreeBSD um das Jahr 2000 herum das Konzept als Jails weiterentwickelte. Diese Jails zeigen erkennbare Parallelen zu den heutigen Linux-Containern und erlaubten das Ausführen eines Prozesses, ohne dass dieser Zugriff auf das übrige System erhielt. Jails besitzen ein eigenes Root-Dateisystem und erhalten bei Bedarf eine eigene IP-Adresse.

Im Jahr 2004 folgte Oracle mit Solaris Containers, die Dank des Dateisystems ZFS das Anfertigen von Snapshots erlaubten. 2005 ging Open Virtuozzo (Open VZ) an den Start, was die enorme Verbreitung von günstigen VPS (Virtual Private Servers) begünstigte. OpenVZ verließ sich auf einen gepatchten Kernel, um Virtualisierung und Ressourcenisolation anzubieten.

Ein Jahr später kündigte Google die Process Containers an, aus denen die heutigen Cgroups entstanden. Cgroups sind seit Version 2.6.24 im Kernel enthalten und bilden die Grundlage, um Prozesse und Prozessgruppen mit eigenen Ressourcen ("limits") auszustatten. 2008 stand schließlich Linux Containers (LXC) bereit, das erstmals auf Basis von Cgroups und Namespaces vollwertige Container ohne eigens dafür angepassten Kernel anbot.

Container-Logistik

Oft sieht der Ablauf so aus, dass ein Admin Container unter Linux bei Bedarf frisch erstellt oder sie einmalig einrichtet und dann regelmäßig nutzt. Bei der Konfiguration eines Containers und dem Setup der darin laufenden Anwendung handelt es sich durchaus um einen aufwendigen Prozess.

Gerade Unternehmen hadern zudem damit, dass den üblichen Container-Lösungen von Haus aus Clustering- und Hochverfügbarkeitslösungen fehlen. Wie bei vielen anderen Open-Source-Projekten auch mangelt es zudem meist an grafischen Oberflächen, um die Technologie der breiten Masse von IT-Administratoren zugänglich zu machen.

Der große Siegeszug von Containern begann daher erst, als Docker (engl.: Hafenarbeiter) auf der Bühne erschien: Im März 2013 stellte die kalifornische Firma Dotcloud die Software auf einer Python-Konferenz vor, und sie fand schnell Anklang in der Community (siehe Kasten "Das Docker-Konzept").

Das Docker-Konzept

Docker war schon in seiner Anfangszeit vor allem als Projekt zum Automatisieren von Abläufen gedacht, bei dem sich Container mit anderen Komponenten zu einem mächtigen Tool-Set vereinen. Während es beim Erstellen von Containern zu Beginn auf dieselbe Technologie setzte wie Linux Containers, stützt sich die Software heute auf die eigene, abstrahierte Implementation, die in die Bibliothek Libcontainer einfloss. Mittlerweile verwenden auch wieder andere Projekte diese Schnittstelle, um isolierte Umgebungen einzurichten.

Docker folgt einem Client-Server-Modell: Als Werkzeuge für die Kommandozeile fungieren Client-Tools, die mit dem entsprechenden Daemon (docker engine) kommunizieren. Dabei spielt es keine Rolle, ob Sie beide Komponenten auf ein und demselben System betreiben oder diese trennen. Erwartungsgemäß nimmt der Daemon Befehle entgegen und zeichnet für die eigentliche Umsetzung verantwortlich, wie beispielsweise das Starten und Stoppen von Containern.

Installation unter Raspbian

Docker steht für alle gängigen Distributionen bereit. Sie können die Software also aus den Paketquellen oder über andere Wege installieren. Für den Test auf dem RasPi empfiehlt sich der Einsatz eines offiziellen Skripts für die Installation, da es Ihnen viele Schritte abnimmt.

Auf gängigen Desktop-PCs und Servern stellt Docker keine allzu hohen Anforderungen an das darunterliegende System: Sie brauchen einen 64-Bit-Kernel, der Cgroups, Namespaces und AUFS unterstützt. Bei den gängigen Distributionen genügt es, wenn Sie dazu Kernel 3.10, besser 3.12 oder neuer, installieren.

Für den Betrieb von Docker auf dem RasPi empfiehlt sich der Einsatz eines Raspberry Pi 3: Der Quadcore-Prozessor Cortex-A53 mit einem Takt von 1,2 GHz und 1 GByte RAM sorgen für genug Power, um Container sinnvoll einzusetzen. Prinzipiell läuft Docker aber auch auf kleineren Modellen wie dem 2B oder Pi Zero. Für den Artikel verwendete der Autor einen RasPi 3 unter Raspbian 8. Alle im Artikel beschriebenen Kommandos und Beispiele beziehen sich auf dieses Testgerät.

Zur Installation melden Sie sich via SSH auf dem RasPi an. In einer Konsole bringen Sie das System zunächst als Root auf den aktuellen Stand (Listing 1, Zeile 1). Dann erfolgt die Installation über ein vom Projekt bereitgestelltes Skript. Damit die Installation klappt, brauchen Sie das Werkzeug Curl. Der Befehl lädt das Skript von der offiziellen Docker-Webseite herunter und speichert es unter dem Namen install-docker.sh. Anschließend ruft es einen Pager auf und bietet so die Möglichkeit, einen Blick in das Skript zu werfen. Beenden Sie diesen über [Q], startet das Skript direkt mit der Arbeit (Abbildung 1).

Abbildung 1: Die Installation von Docker auf einem Raspberry Pi setzt voraus, dass Sie das System über das Paketmanagement auf den aktuellen Stand bringen.

Der Autor rät daher dazu, diesen Weg nur in experimentellen und unkritischen Umgebungen zu verwenden. Um Docker mit dem Benutzer pi einzusetzen, müssen Sie diesen noch der frisch angelegten Docker-Gruppe hinzufügen (Listing 1, Zeile 6).

Falls Sie Docker auf andere Art und Weise installieren möchten, können Sie auf ein fertiges Image der Gruppe Hypriot zurückgreifen [2], das Programm selbst bauen [3] oder ein (allerdings veraltetes) Paket für den RasPi nutzen, das ebenfalls von Hypriot stammt.

Listing 1

 

# apt-get update && apt-get dist-upgrade
# curl -sSL -o install.sh https://get.docker.com
# less install.sh
[... Beenden mit [Q] ...]
# sh install.sh
# usermod -aG docker pi

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 8 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

12/2018
Coole Projekte

Diese Ausgabe als PDF kaufen

Preis € 7,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Bytes und Beats

    In Sonic Pi können Sie mit wenigen Codezeilen Klänge manipulieren, Beats zusammenstellen und ganze Songs komponieren.

  • Klein, aber fein

  • Trick or treat

    Das traditionelle RPG-Gruselkabinett glänzt dieses Jahr mit einer innovativen Umsetzung mittels Pneumatik und Elektropneumatik sowie ST-Programmierung.

  • Unter Kontrolle

    Traditionell stellen wir alljährlich ein selbst gebautes Halloween-Gespenst vor. Die pneumatischen und elektronischen Grundlagen erklärt dieser Artikel.

  • Go Pi Go!

    Der Bausatz GoPiGo3 liefert Bauteile und Software für ein kleines Roboterauto. Zusammen mit einem RasPi als Gehirn programmieren Sie den Roboter per Mausklick.

  • Handlicher Helfer

    Während die Folien der Präsentation durchlaufen, liefert ein kleiner Dokumentenserver auf Basis des GL-AR300M-ext zusätzliche Informationen aus.

  • Wiederverwertet

    Mithilfe eines einfachen Python-Programms recyceln Sie ein ausgedientes Smartphone als drahtlos angebundenes RasPi-Display.

  • Herzenssache

    Steigt beim Krimi der Herzschlag bedrohlich an? Mit einem Pulsmesser in Eigenbau ermitteln Sie einfach und kostengünstig, ob der Herzschlag noch in verträglichen Bereichen liegt.

  • Fernbedient

    Mit der Fernbedienung den RasPi steuern. In der Theorie möglich, in der Praxis oft beschwerlich. Die Libcec liefert praktische Tools zur Fehlersuche.

  • Musikwürfel

    Mit Musikcube machen Sie Ihre eigene Sammlung fit fürs Streamen. Der terminalbasierte Audioplayer lässt sich Fernsteuern und bietet eine App für Android-Smartphones.