Docker Container GUI grafische Weboberfläche mit Portainer

This page is also available in English

Ursprünglich habe ich Docker rein über die Kommandozeile verwaltet, was mit ein paar simplen Befehlen schon sehr einfach ist. Noch mehr Übersicht und eine komfortable Admin-Oberfläche liefert Portainer. Portainer selbst kann auch als Docker-Container gestartet werden und macht das Verwalten von Docker-Containern zum Kinderspiel.

Software

SoftwarePortainer
GitHubhttps://github.com/portainer/portainer
aktuelle Version 2.15.1
gefunden19.09.2022

Zugriff aus dem Internet

Docker Basics

Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker

Damit Portainer sicher vom Internet erreicht werden kann, setze ich einen Let's Encrypt Reverse-Proxy ein. Zuerst habe ich Nginx als Reverse-Proxy verwendet, diesen aber später mit Traefik ersetzt. Der Reverse-Proxy stellt eine verschlüsselte HTTPS-Verbindung zur Verfügung und ermöglicht es mehrere Websites auf einem Server zu betreiben.

Schritt für Schritt Portainer mit Docker inkl. Zugriff vom Internet

Hardwareanforderung:
  1. Für die Docker-Installation kann eine nahezu beliebige Hardware verwendet werden: Zum Beispiel ein virtueller Server eines Providers, oder für zu Hause: ein PC, Notebook, Raspberry PI, MAC, eine NAS: QNAP, Synology oder eine beliebige andere Hardware auf der sich Windows oder Linux installieren lässt.
Voraussetzungen für den Internetzugriff:
  1. Der sichere Aufruf aus dem Internet erfolgt am besten über eine Domain mit einem DNS-Eintrag auf die öffentliche IP-Adresse, siehe Domain und dessen Verwaltung. Bei einem gemieteten Server eines Providers vergibt dieser eine IP-Adresse. Wer einen Server im eigenen Heimnetzwerk betreiben will, benötigt ein Port-Forwarding.
  2. Für die Zertifikatsverwaltung und den sicheren Zugriff auf die Webservices verwende ich einen Reverse Proxy und Let's Encrypt-Zertifikate
Container für Portainer

  1. docker-compose.yml anlegen und anpassen
  2. Container starten und 
  3. Einrichten

Setup

Um Portainer mittels docker compose zu starten, kann das offizielle Docker Portainer-Image verwendet werden. Das Image kann mit einer simplen docker-compose.yml Datei heruntergeladen, erstellt und gestartet werden. Vorab sollte die Datei mit einem beliebigen Texteditor wie folgt befüllt und dann angepasst werden:

Dateiname: docker-compose.yml, Inhalt:

version: '3.2'

services:
  portainer:
    image: portainer/portainer-ce:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/data
   #Für einen direkten Test-Zugriff, in den folgenden 2 Zeilen "#" entfernen. Aufruf: http://localhost:9000 oder http://ServerIP:9000
    #ports:   
      #- "9000:9000" 
   #Labels für ReverseProxy, siehe: https://www.libe.net/traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.portainer.rule=Host(`portainer.domain.tld`)"
      - "traefik.http.routers.portainer.entrypoints=websecure"      
      - "traefik.http.routers.portainer.tls.certresolver=myresolver"
      - "traefik.http.services.portainer.loadbalancer.server.port=9000"
      - "traefik.http.routers.portainer.service=portainer"

#Ohne dem Einsatz eines Reverse Proxy (https://www.libe.net/traefik) fehlt voraussichtlich das Netzwerk webproxy 
#und die folgenden Zeilen können entfernt oder auskommentiert werden. Alternativ kann das Netzwerk mit "docker network create webproxy" erstellt werden
networks:
  default:
    external:
      name: webproxy

Für einen direkten Zugriff über die IP-Adresse oder localhost - auch ohne Reverse Proxy, DNS oder öffentlicher IP - kann die auskommentierten Port-Einstellung für Testzwecke aktiviert werden:

...
   #Für einen direkten Test-Zugriff, in den folgenden 2 Zeilen "#" entfernen. Aufruf: http://localhost:9000 oder http://ServerIP:9000
    ports:   
      - "9000:9000" 
...

Um aus dem Internet über den Traefik Reverse Proxy zugreifen zu könnenmuss in den Labels die Domäne mit den zuvor erstellten DNS-Einträgen ersetzt werden (im Beispiel: portainer.domain.tld).

Das Beispiel verwendet Bind-Mounts und keine Docker Volumes für das permanente Speichern der Daten.

📢 Hier wird voraussichtlich am 13.10.2022 ein neuer Beitrag verlinkt werden: Docker Volumes vs. Bind Mounts Push-Nachrichten erlauben?

Portainer starten

Der Start erfolgt aus dem Ordner der docker-compose.yml-Datei mit dem Befehl„"docker-compose up“:

docker-compose up -d

Verwaltung

Beim Aufruf der angegebenen Domain (https://portainer.domain.tld) meldet sich das Portainer-Setup. Beim Testbetrieb auf dem eigenen Rechner und dem Aktivieren von Port 9000 kann der Aufruf zudem direkt ohne Internet über die URLs http://localhost:9000 oder http://ServerIP:9000 erfolgen.

Dadurch, dass in der docker-compose-yml-Datei als Volume  /var/run/docker.sock in den Container gemappt wird, kann Portainer alle Container auslesen und verwalten.

Bestehende Docker-Container in Portainer

Wenn die Container außerhalb von Portainer erstellt werden, ist deren Conrol: "Limited" und nicht alle Aktionen verfügbar:

 

Der Container für Portainer selbst ist logischerweise ein Container der außerhalb von Portainer erstellt wurde, da Portainer vor dem Start nicht zur Verfügung steht: wie auch ...

Das Starten oder Stoppen der Container, anzeigen der Logs oder ein Blick auf die Konsole ist aber auch mit "Limited" möglich.

Neue Container anlegen

Neue Container können in Portainer über vorbereitete App Templates erstellt werden, z.B: WordPress, Joomla oder Drupal:

Zudem kann ein beliebiger Stack über ein docker-compose-File erstellt werden:

Als Beispiel, siehe auch WordPress in Docker inkl. HTTPS Let’s Encrypt-Setup

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Veröffentlichung: 19.09.2022 von Bernhard


Top-Artikel in diesem Bereich


ioBroker installieren - Docker
Mit ioBroker können verschiedene Automatisierungslösungen oder Geräte in einem System zusammengefasst werden. Um bestimmte Gateways oder Geräte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.

Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ
Dank zahlreicher Integrationsmöglichkeiten ist Home-Assistant eine einfache Plattform für das Steuern verschiedenster Smart-Home Geräte. Im Vergleich zu ioBroker ist mir der Start mit Home Assistant wesentlich einfacher gefallen. Während ich für ioBroker noch am Suchen war, welches Frontend ich für meine Dashboards verwenden könnte, hatte ich mit Home-Assistant out of the box ein fertig eingerichtetes System. Die Lovelance Dashboards von Home Assistant können einfach in der GUI zusammengeklickt...

Conbee 2: Phoscon deCONZ - Docker Inbetriebnahme | Review
Mit dem kleinen USB-Stick Conbee2 habe ich meinen NAS um ein Zigbee-Gateway erweitert. Conbee2 kann auf Raspbian, Ubuntu, Docker oder Windows installiert werden.

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details