Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

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

Posted on 28. Oktober 20191. Mai 2023 by Stefan Draeger

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
  • Benötigte Resource installieren
  • Beispiel
    • Was macht der Befehl „docker run arm32v5/hello-world“ ?

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

Schreibe einen Kommentar Antworten abbrechen

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

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}