Docker #1: einrichten von Docker auf den Raspberry PI 3 Modell B+

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.

Raspberry PI 3 Modell B+
Raspberry PI 3 Modell B+

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 Resourcen 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 einpaar 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 ein 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

 

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.