Docker einsetzen auf dem Raspberry Pi

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.)

LinuxCommunity kaufen

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

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 09/2017 PERFEKTE FOTOS

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Samsung VG-KBD1500 - Bluetooth-Tastatur mit Touchpad mit Xubuntu 16.04.2 LTS
Linux- & BSD-UserGroup im Weserbergland, 16.08.2017 19:16, 0 Antworten
Bin grad mit "meinem Latein am Ende" darum hier mal so in den Raum geworfen. Samsung VG-KBD1500 -...
Tails verbindet nicht mit WLan
Georg Vogel, 30.07.2017 15:06, 5 Antworten
Hallo zusammen! Habe mir von Linux Mint aus einen Tails USB-Stick erstellt. Läuft soweit gut,...
Genivi for Raspberry Pi 3
Sebastian Ortmanns, 28.07.2017 10:37, 1 Antworten
I try to build a Genivi Development Platform for Rasberry Pi 3. But I always get the failures bel...
Bash awk Verständnis-Frage
Josef Federl, 22.07.2017 17:46, 2 Antworten
#!/bin/bash # Skriptdateiname = test.sh spaltennummer=10 wert=zehner awk '{ $'$spaltennummer'...
Bash - verschachtelte Variablenersetzung, das geht doch eleganter als meine Lösung?
Josef Federl, 18.07.2017 20:24, 3 Antworten
#!/bin/bash #Ziel des Skriptes wird sein die ID zu extrahieren hier nur als Consolentest: root@...