Um auf dem Raspberry Docker zu installieren, ist es am Einfachsten auf der Kommandozeile die folgenden Befehle zu verwenden.
curl -fsSL get.docker.com -o get-docker.sh
chmod +x get-docker.sh
./get-docker.sh
Der erste Befehl lädt das Skript ‚get-docker.sh‘ von der offiziellen Docker-Webseite herunter
Der zweite Befehl macht die heruntergeladene Datei ausführbar
Der dritte Befehl startet das Skript, im folgenden Kasten sieht man welche Ausgaben bei mir daraufhin erfolgten.
pi@raspberrypi:~ $ ./get-docker.sh
# Executing docker install script, commit: 6bf300318ebaab958c4adc341a8c7bb9f3a54a1a
+ sudo -E sh -c apt-get update -qq >/dev/null
+ sudo -E sh -c apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sudo -E sh -c curl -fsSL "https://download.docker.com/linux/raspbian/gpg" | apt-key add -qq - >/dev/null
Warning: apt-key output should not be parsed (stdout is not a terminal)
+ sudo -E sh -c echo "deb [arch=armhf] https://download.docker.com/linux/raspbian buster stable" > /etc/apt/sources.list.d/docker.list
+ sudo -E sh -c apt-get update -qq >/dev/null
+ [ -n ]
+ sudo -E sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
+ sudo -E sh -c docker version
Client: Docker Engine - Community
Version: 19.03.2
API version: 1.40
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 06:18:36 2019
OS/Arch: linux/arm
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.2
API version: 1.40 (minimum version 1.12)
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 06:12:41 2019
OS/Arch: linux/arm
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:
sudo usermod -aG docker pi
Remember that you will have to log out and back in for this to take effect!
WARNING: Adding a user to the "docker" group will grant the ability to run
containers which can be used to obtain root privileges on the
docker host.
Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
for more information.
pi@raspberrypi:~ $
Ob alles erfolgreich war kann man dann direkt mit dem Befehl ’sudo docker run hello-world‘ testen
pi@raspberrypi:~ $ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1eda109e4da: Pull complete
Digest: sha256:451ce787d12369c5df2a32c85e5a03d52cbcef6eb3586dd03075f3034f10adcd
Status: Downloaded newer image for 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.
(arm32v7)
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:~ $
Damit ist Docker auch schon grundsätzlich installiert und eingerichtet. Der vorangegangene Befehl hat schon den ersten Container erstellt und ausgeführt wenn ‚Hello from Docker!‘ auf der Kommandozeile erschienen ist.
Um mir die Verwaltung einfacher zu machen, habe ich als letzte Aktion gleich noch ein Docker-Webinterface (in meinem Fall ‚Portainer‘ nachinstalliert. (Link zur Orginal-Anleitung)
pi@raspberrypi:~ $ sudo docker volume create portainer_data
portainer_data
Mit diesem Befehl legt man manuell einen Bereich (Docker -> Volume) an, der dazu dient die Daten vom Container auszulagern, die sich bei einem späteren Upgrade nicht ändern sollen (Docker -> Persistenz)
pi@raspberrypi:~ $ sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer:latest
Unable to find image 'portainer/portainer:latest' locally
arm: Pulling from portainer/portainer
a3ed95caeb02: Pull complete
802d894958a2: Pull complete
47d858bf6dfd: Pull complete
Digest: sha256:8293a4d4bf98786df2993df10d3875b721948d1944952bb4947cfb87d2136efc
Status: Downloaded newer image for portainer/portainer:latest
bfbd0e0c1ffd9797bcb9b1ba61c54437daa43f69e4c31a4029fbca5aed4c36a2
pi@raspberrypi:~ $
Jetzt kann direkt in einem beliebigen Internet-Browser die URL: http://raspberrypi:9000 aufgerufen werden und man landet direkt auf der Portainer Startseite und muss dort direkt das Admin-Kennwort festlegen. (Falls der Aufruf mittels Name nicht funktioniert, dann die IP-Adresse des Raspberries verwenden)

Für die eigentliche Verwendung von Docker zusammen mit Portainer habe ich einen separaten Artikel erstellt.
Zu diesem Zeitpunkt wusste ich noch nicht, was diese Kommandozeilen im Detail bedeuteten, nachdem sie aber erfolgreich ausgeführt waren, konnte ich direkt mittels Portainer auf meine Docker-Instanz zugreifen.