In diesem Tutorial möchte ich beschreiben wie du dir die Docker Engine auf einem Raspberry PI 3 Modell B+ mit dem Betriebssystem Raspbian/Stretch installierst. Da Docker für die Virtualisierung einige Voraussetzungen hat kann dieses erst ab diesem Raspi Modell verwendet werden.

Den Raspberry PI 3 Modell B+ habe ich im gleichnamigen Tutorial Raspberry PI Model 3 B+ unboxing und erster betrieb bereits vorgestellt, daher gehe ich in diesem Tutorial „nur“ auf die Besonderheit mit der Docker Engine ein.
Update der Pakete
Es empfiehlt sich vor der Installation ein Update der Pakete durchzuführen.
Dieses wird mit dem nachfolgenden Befehl installiert.
sudo apt-get update
Dieser Befehl prüft nun verschiedene Internetressourcen nach Updates und installiert die ggf.
pi@raspberrypi:~ $ sudo apt-get update Get:1 http://archive.raspberrypi.org/debian stretch InRelease [25.4 kB] Get:2 http://mirrordirector.raspbian.org/raspbian stretch InRelease [15.0 kB] Get:3 http://archive.raspberrypi.org/debian stretch/main armhf Packages [221 kB] Get:4 http://mirrordirector.raspbian.org/raspbian stretch/main armhf Packages [11.7 MB] Fetched 11.9 MB in 40s (292 kB/s) Reading package lists... Done
Benötigte Resource installieren
Bevor man die Docker Engine installieren kann, muss man zwei zusätzliche Ressourcen installieren.
Diese werden mit dem nachfolgenden Befehl installiert.
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y
Es wird installiert:
apt-transport-https – dieses Paket ermöglicht die Authentifizierung von Server und Clients mittels Zertifikaten
ca-certificates – Enthält eine Liste von Zertifizierungsstellen, mit der SSL-basierte Anwendungen die Authentizität von SSL-Verbindungen überprüfen können
curl – Befehlszeilenwerkzeug zur Dateiübertragung mit URL Syntax
gnupg2 – GNU Privacy Guard, ein freier PGP Ersatz
software-properties-common – ermöglicht die einfache Verwaltung von zusätzlichen Softwarequellen
Wenn die Abhängigkeiten installiert wurden, dann muss der offizielle Docker GPG2 Key installiert werden.
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
Um die Pakete der Docker Engine zu installieren, müssen wir zunächst die Quellen dem Betriebssystem bzw. dem Paketierrungtool apt bekannt machen.
$echo "deb [arch=armhf] https://download.docker.com/linux/raspbian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
Danach müssen wir erneut ein update durchführen. Hier sollten nun unseren neuen Quellen zu Docker aufgelistet werden.
pi@raspberrypi:~ $ sudo apt-get update Hit:1 http://mirrordirector.raspbian.org/raspbian stretch InRelease Hit:2 http://archive.raspberrypi.org/debian stretch InRelease Get:3 https://download.docker.com/linux/raspbian stretch InRelease [31.1 kB] Get:4 https://download.docker.com/linux/raspbian stretch/stable armhf Packages [7,762 B] Fetched 38.8 kB in 1s (27.4 kB/s) Reading package lists... Done pi@raspberrypi:~ $
Für dieses Tutorial installiere ich die Docker Engine in der Version 18.06.2
sudo apt-get install docker-ce=18.06.2~ce~3-0~raspbian containerd.io
Damit der Docker Prozess unter dem aktuellen Benutzer läuft, müssen wir diesem Benutzer ein paar Berechtigungen vergeben.
sudo usermod -aG docker $USER
Beispiel
Nachdem nun die Docker Engine installiert ist, wollen wir testen, ob wir einen Container installieren und starten können. Hierfür gibt es einen einfachen Container welcher ein Hello World auf der Konsole ausgibt.
sudo docker run arm32v5/hello-world
Hier die gesamte Ausgabe der Konsole.
pi@raspberrypi:~ $ sudo docker run arm32v5/hello-world Unable to find image 'arm32v5/hello-world:latest' locally latest: Pulling from arm32v5/hello-world 590e13f69e4a: Pull complete Digest: sha256:8a6a26a494c03e91381161abe924a39a2ff72de13189edcc2ed1695e6be12a5f Status: Downloaded newer image for arm32v5/hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (arm32v5) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/ pi@raspberrypi:~ $
Was macht der Befehl „docker run arm32v5/hello-world“ ?
Zunächst wird geprüft, ob es bereits ein Image in der angegebenen Version im lokalen Docker Repository gibt.
Wenn dieses nicht so ist, wird das mit der Meldung „Unable to find image ‚arm32v5/hello-world:latest‘ locally“ quitiert und es wird das Image aus dem Docker Hub geladen.
Je nach Internet geschwindigkeit und Imagegröße dauert dieses etwas mehr oder weniger lange. In dem Beispiel von „Hello World“ sind es nur knapp 2kb.
Wenn keine Version beim Ausführen des Befehls angegeben wird, so wird immer das Release herangezogen, welches als „stable“ markiert wurde. (Dieses muss nicht zwangsläufig die aktuellste Version sein.)
Es wird zusätzlich ein „digest“ ausgegeben, diesen Key finden wir verkürzt in der Auflistung der Docker Images wieder.
pi@raspberrypi:~ $ sudo docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE arm32v5/hello-world latest ee8e362eeaf0 10 months ago 1.68kB