Docker Container GUI grafische Weboberfläche mit Portainer
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 Containern zum Kinderspiel.
Software
Software | Portainer |
---|---|
GitHub | https://github.com/portainer/portainer |
aktuelle Version | 2.21.4 |
gefunden | 28.10.2024 |
Zugriff aus dem Internet
Docker Basics Damit Portainer sicher vom Internet erreicht werden kann, setze ich Traefik als Let's Encrypt Reverse-Proxy ein.
Der Reverse-Proxy stellt eine verschlüsselte HTTPS-Verbindung zur Verfügung und ermöglicht es mehrere Websites auf einem Server zu betreiben. Alternativ zu einem Reverse-Proxy kann auch ein Cloudflare-Tunnel für das Veröffentlichen von Webservices aus dem eigenen Netzwerk verwendet werden:
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
Schritt fĂĽr Schritt Portainer in Docker inklusive Zugriff vom Internet
Hardwareanforderung:
Voraussetzungen fĂĽr den Internetzugriff:
Container für Portainer
siehe auch: Cloudflare oder Reverse Proxy
- docker-compose.yml anlegen und anpassen
- Container starten undÂ
- 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:
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:
name: webproxy
external: true
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önnen, muss 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. Siehe: Docker Daten speichern: Docker Volumes vs. Host-Ordner
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
{{percentage}} % positiv