Ein Blog über Code, Hardware und Co

Technik und Hardware, NAS, Server und Co

Docker mit Portainer als GUI unter Ubuntu LTS installieren

Zuletzt aktualisiert am 26. Juni 2024.

Containerisierung mit Docker ist eine feine Sache und eigentlich komplett über die Konsole möglich. Manchmal ist aber trotzdem ein GUI intuitiver zu bedienen und bietet mehr Informationen auf einen Blick. Daher schauen wir uns heute mal an, wie man einen neuen Docker-Host aufsetzen und mittels Portainer-GUI nutzen kann.

Docker ist eine Open-Source-Plattform, die Entwicklern und Systemadministratoren hilft, Anwendungen in Containern zu entwickeln, bereitzustellen und auszuführen. Ein Container ist eine leichtgewichtige, eigenständige Einheit, die alle notwendigen Komponenten (Code, Laufzeit, Systemtools, Bibliotheken und Einstellungen) enthält, um eine Software auszuführen. Dadurch wird sichergestellt, dass die Anwendung unabhängig von der Umgebung, in der sie ausgeführt wird, konsistent bleibt.

Portainer ist eine benutzerfreundliche Open-Source-Verwaltungsschnittstelle für Docker und Kubernetes. Es bietet eine grafische Benutzeroberfläche (GUI), mit der Entwickler und Systemadministratoren ihre Container, Images, Netzwerke und Volumes verwalten können, ohne die Kommandozeile verwenden zu müssen.
Das coole ist, dass Portainer selbst als Dokcer-Container läuft und ganz einfach über einen Browser verwendet werden kann.

Schritt 1: Docker installieren

Wir fangen from the Scratch an. Wir haben ein neu installiertes Ubuntu-System.
Jetzt gibt es verschiedene Möglichkeiten für die Installation von Docker, diese sind hier beschrieben.
Der effiziente ITler entscheidet sich für das zur Verfügung gestellte Installationsskript 😉
Also einmal downloaden:

curl -fsSL https://get.docker.com -o get-docker.sh

Und dann ausführen:

sudo sh ./get-docker.sh

Das Skript stammt direkt von der Docker-Seite, bitte aufpassen, keine Skripte von Drittseiten einfach auszuführen.

Wenn das Installationsskript durchgelaufen ist, sieht das Ganze so aus:

Was macht das Installationsskript eigentlich?

Das obige Installationsskript lädt die aktuellen Docker-Binaries herunter und fügt die Docker-Paketquellen zu den Paketquellen des Systems hinzu. Dadurch kannst du in Zukunft ganz einfach deine Docker-Version mit dem Rest des Systems mittels folgender Befehle updaten:

Zuerst die Paketquellen aktualisieren:

sudo apt update

Dann die Updates installieren:

sudo apt upgrade

Wie man sieht, wird bei einem “apt update” nun die Paketquelle von Docker berücksichtigt:

Schritt 2: Portainer installieren

Wir gehen dazu zur Portainer-Webseite in den Installationsbereich (https://www.portainer.io/install) und wählen die “Community Edition”, dann eine neue Installation (“Set up a new Portainer CE Server installation”), “Docker Standalone” und dann “Install Portainer CE with Docker on Linux”.

Wir landen dann auf der folgenden Seite, auf der die Installation beschrieben ist:
https://docs.portainer.io/start/install-ce/server/docker/linux

Als nächstes – und das ist wichtig – erstellen wir ein docker-volume für unseren Portainer-Container. Das machen wir, weil grundsätzlich alle Daten in einem Docker-Container flüchtig sind. Das bedeutet, wenn wir einen Container erstellen, darin Daten anfallen und wir diesen Container beenden, sind alle erzeugten Daten futsch.

Daher erstellen wir mit folgendem Befehl ein persistentes Docker-Volume:

docker volume create portainer_data

Tipp: Wenn du einen Fehler wie “var/run/docker.sock: connect: permission denied” erhältst, führe den Befehl noch einmal mit einem vorangestellten “sudo” aus 😉

Was bedeutet “persistent”? Was ist Persistenz?

Persistenz bezeichnet in der Informatik die Eigenschaft von Daten, über die Laufzeit des Programms hinaus dauerhaft gespeichert zu bleiben, beispielsweise in Datenbanken oder Dateien. Sie stellt sicher, dass Informationen auch nach einem Neustart des Systems oder Programms weiterhin verfügbar sind.

Die eigentliche Installation

So, alle Vorbereitungen sind getroffen und wir installieren nun Portainer in einem Docker-Container. Dafür stellt uns Portainer den folgenden schönen Befehl zur Verfügung:

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Was macht dieser Befehl nun im Detail?

Teil des BefehlsBedeutung
docker runDer Ausführungsbefehl, dass man einen Docker-Container starten möchte
-d“detached” -> Der Container soll im Hintergrund laufen
-p 8000:8000Portmapping: Der lokale Port 8000 soll zum Containerport 8000 weiterleiten
-p 9443:9443Portmapping: Der Container soll mit Port 943 auf dem lokalen Port 943 des Docker-Hosts lauschen
–name portainerDer Name des Containers: “portainer”
–restart=alwaysDer Container soll (z.B. bei einem Neustart des Systems) immer wieder neu gestartet werden
-v /var/run/docker.sock:/var/run/docker.sockMit “-v” werden z.B. Volumes des Hostsystems in den Docker-Container gemountet. Hier wird der Socket des Docker-Services (also Docker) in den Portainer-Container gemountet. Nur so kann Portainer Docker verwalten.
-v portainer_data:/dataDas soeben erstelle docker-volume “portainer_data” wird in den Container gemountet. Dort ist es dann unter “data” gemountet. So können die Daten und Einstellungen von Portainer persistent gespeichert werden
portainer/portainer-ce:latestDas Image, das im Container gestartet werden soll. Hier: Portainer-ce in der jeweils aktuellsten Version.
Tabelle 1: Erklärung des docker-run Kommandos für Portainer.

Optional: Überprüfen, ob der Container läuft

Der Docker-Container mit Portainer sollte nun laufen. Wer hier noch einmal ganz sichergehen will, der kann mit folgendem Befehl schauen, ob der Container läuft:

docker ps -a

Die Ausgabe sollte dann ungefähr wie folgt aussehen:

Schritt 3: Einrichtung im Browser

Jetzt läuft der Docker-Container und damit Portainer und wir können die weitere Einrichtung direkt über den Browser vornehmen.
Dafür rufen wir die folgende URL auf:

https://IP:9443/

Wir richten nun einen Admin-Account ein und zack, sind wir schon mitten in Portainer!

Tipp: Die Einrichtung muss aus Sicherheitsgründen (weil wir hier den Admin-Zugang usw. festlegen) zeitnah zum Start des Containers erfolgen.

Schritt 4: Die Docker-Environment

Wir sehen, dass hier nun bereits eine Environment für Docker angelegt worden ist. Das coole ist: Eine Portainer-Instanz kann gleich mehrere Environments verwalten – egal ob Docker oder beispielsweise Kubernetes.

Schritt 5: Container erstellen

Container können nun ganz einfach über Portainer direkt oder mittels Docker-Compose-Files erstellt werden. Ich empfehle die Nutzung der sog. “Stacks”.
Ein Stack ist dabei quasi eine Funktionseinheit (und im Prinzip Analog zu einem Docker-Compose-File), die aus mehreren Containern, die beispielsweise miteinander verknüpft sind, besteht.

Updaten/Upgraden von Portainer

Wie bei jedem Stück Software, ist es auch bei Portainer wichtig, regelmäßig Updates einzuspielen um auf dem aktuellen und sicheren Stand zu bleiben. Das ist, da Portainer ja als eigener Docker-Container läuft, einfacher, als man denkt:

Schritt A) Portainer stoppen

Mit folgendem Befehl stoppen wir den Docker-Container von Portainer:

docker stop portainer

Schritt B) Portainer Container löschen

Jetzt stellen sich die Nackenhaare auf, aber ja, wir löschen mit folgendem Befehl einfach den Docker-Container, in dem sich Portainer befindet:

docker rm portainer

Und keine Angst, die Konfiguration und Co bleiben natürlich erhalten, da wir diese in unserem portainer_data Verzeichnis persistiert haben 😉

Schritt C) Portainer Container recreaten

Jetzt erstellen wir den Portainer-Container einfach mit dem gleichen Befehl neu, wie der, mit dem wir ihn installiert haben. Dadurch wird wieder das persistente docker-volume “portainer_data” gemountet, sodass alle unsere Einstellungen wieder da sind. Der Container wird aber mit dem aktuellen und neuesten “lastest”-Image von Portainer gebaut.

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Der Prozess im Video

Der ganze Prozess der Installation ist hier noch einmal wirklich Klasse in einem Video durchgespielt:

Schreibe eine Antwort