Docker-Container: Welche nutzt ihr?

polyphase schrieb:
Allgemeine Frage:
Wenn ihr so viele Docker Container am laufen habt, habt ihr die alle im gleichen Netzwerk laufen? Oder von einander isoliert, soweit möglich?
Das ist wirklich sehr allgemein gefragt. Ob ein Server nun Dienste in einem einzigen Netzwerk über ein und dieselbe Schnittstelle anbietet oder aber verschiedene Netzwerke über mehrere Schnittstellen - seien es physische LAN-Adapter oder VLANs - hängt vom Anwendungsfall ab. Meistens laufen die Docker-Container sicherlich im selben Netzwerk, aber man kann sie natürlich je nach Möglichkeiten am Host auch bestimmten Hardware-/VLAN-Schnittstellen zuweisen. Es gibt durchaus auch Situationen, in denen ein Container rein lokal innerhalb des Hosts läuft und gar nicht von außerhalb des Hosts erreichbar ist, beispielsweise wenn es sich um eine lokale Datenbankinstanz handelt, die lediglich als Datenquelle für einen anderen Container dient.

Wenn man jedoch einen Server hat, der über mehrere Schnittstellen in mehreren Netzwerken unterwegs ist, stellt sich generell die Frage nach der Sicherheit, weil der Server damit ein potentielles Gateway ins jeweils andere Netzwerk darstellt - Docker hin oder her.
 
  • Gefällt mir
Reaktionen: polyphase
Ich meine, nutzt ihr eine gemeinsame Bridge oder pro Stack eine. Kommunikation nach extern per Ports oder über macvlan usw.

Jeder macht's anders, interessiert mich einfach 😉

Da bei mir demnächst einiges anfällt, von VMs in Container umziehen usw.
 
Proxmox-Server.
2 x LXC und 1x VM jeweils mit Docker und Portainer (die Container-Sammlung getrennt nach Einsatzgebiet)

Jede LXC/VM in einem eigenen Netzwerk, mit einer virtuellen Sophos Firewall als Gateway in Richtung Heimnetzwerk / Fritzbox.

Die meisten Docker-Container in einem isolierten Netzwerk ohne Internet.
Nach außen (Heimnetzwerk) ist nur der Port von Nginx Proxy Manager offen (443 und 80).
Alle anderen Docker-Container sind mit dem Nginx-Container mit einem jeweils getrennten internen Netzwerk verbunden.
 
  • Gefällt mir
Reaktionen: polyphase
Wie schon gesagt, ich bin dabei Dienste von VMs in Docker Container umzuziehen bzw. neue zu delpoyen.

Was ich mir zuerst eingerichtet habe ist den Nginx Proxy Manager + Lets Encrypt Wildcard Zertifikat (eigene Domain habe ich). So dass ich meine internen Gerätewebseiten ohne die nervige Zertifikat Meldung nutzen kann. Dieser Container läuft momentan mit der Default Bridge und entsprechendem Portmapping.

Außerdem gibt es keinerlei Portweiterleitungen durch die Firewall zu irgendwelchen Diensten. Diese sind nur per VPN Verbindung erreichbar.

Jetzt bin ich gerade dabei pihole + unbound von einer VM in einen Docker Stack umzuziehen:
https://www.computerbase.de/forum/threads/docker-compose-portainer-stacks-testdeployment.2107521/

Dabei habe ich erstmal bei den Containern untereinander (pihole und unbound) eine custom bridge eingerichtet. Der pihole Container hat zusätzlich noch eine macvlan Verbindung auf das Netzwerk, damit ich diesen über eine eigene IP und entsprechende Firewall Regeln in allen Netzen als DNS zur Verfügung stellen kann.

Das funktioniert auch alles im Testsetup stabil. Das einzige was fehlt ist jetzt noch die Erreichbarkeit der pihole Weboberfläche über den Proxy + Zertifikat. Der Proxy hat natürlich logischerweiße keinen Zugriff auf die pihole aufgrund dem verwendeten macvlan.

Daher interessiert es mich, wie ihr das so gelöst habt bzw. lösen würdet 😉
 
Kleines Update - meine größte Herausforderung bleibt, die "Docker-Apps" auch wirklich in meine tägliche Routine einzugliedern. Leider hat hier OpenSource dann doch oft starke Usability-Einschränkungen im vgl. zu den kommerziellen SaaS-Anwendungen.

Wichtigste Docker-Container mittlerweile für mich:

Nextcloud:
  • Zum schnellen Aufruf meiner Daten via Smartphone
  • Zum syncen meiner Daten, wobei ich hierfür FolderSync + WebDAV nutze
  • Als Task-Manager, hier habe ich das Kanban-Board via Deck schätzen gelernt. Zwar finde ich Focalboard noch cooler, hat aber wieder keine App.

PhotoPrism:
- Neue Smartphone-Fotos werden via FolderSync direkt hochgeladen und indexiert

Paperless-ngx
- Scans via Smartphone-Cam werden via FolderSync direkt hochgeladen und indexiert

Trilium Notes
- Gefühlt eine unendliche Story, ein gutes Tool für's Wissensmanagement zu finden. Aber noch Joplin, Obsidian und BookStack bin ich mit Trilium am glücklichsten - nur die Smartphone-App fehlt leider

Die anderen Docker-Container (NGINX, Wireguard, Guacamole, Authelia, AdGuard) sind dann mehr Infrastruktur. Die 4 genannten sind dann daily usage und somit wirklicher Mehrwert.
 
Läuft das bei dir auf einem extra Server oder auf dem NAS?
 
Docker läuft via Proxmox VMs auf nem kleinen HP ProDesk (wie NUC nur günstiger) mit 6-Core-CPU und 32GB RAM.
Habe aber auch ein Synology NAS für Storage only, das ist dann in der Docker Compose-File als CIFS-Volume eingebunden.

Auf dem Proxmox ist auch eine Sophos Firewall virtualisiert, und das Synology mit einer USB-NIC einzeln am HP-Server angeschlossen d.h. nur die Docker-Container haben Zugriff auf mein NAS. Es gibt keinen direkten Zugriff aus dem Heimnetzwerk aus.
 
  • Gefällt mir
Reaktionen: polyphase
Das NAS muss dann aber immer laufen oder?

Kannst du Mal einen Auszug zeigen, wie du das NAS per Cifs in docker-compose eingetragen hast?
 
Genau, mein NAS läuft 24/7.
Muss es aber auch, da es zugleich mein Proxmox Backup-Storage ist, und Proxmox wirft Fehlerlogs non-stop wenn ein eingebundenes Storage gerade nicht verfügbar ist ;)

Die Einbindung via Docker Compose ist super simpel. Nur mit dir_mode und uid/gid musste ich bei jedem Docker-Container ein wenig spielen, das hatte nicht immer sofort geklappt bzgl. Schreibrechte.
JSON:
volumes:
  synology-applications-filerun:
    driver: local
    driver_opts:
      type: cifs
      o: "username=dockervm,password=1234,file_mode=0750,dir_mode=0750,uid=1001,gid=1001,rw"
      device: "//192.168.100.2/homes/dockervm/Applications/Filerun"
 
  • Gefällt mir
Reaktionen: netzgestaltung, LieberNetterFlo und polyphase
Wäre es noch einfacher ein SMB Share direkt auf dem Host zu mounten und dann dort Docker Volumes anlegen lassen?

Ist mir gerade gekommen, müsste doch gehen🤔
 
  • Gefällt mir
Reaktionen: Der Lord
x.treme schrieb:
Die Einbindung via Docker Compose ist super simpel. Nur mit dir_mode und uid/gid musste ich bei jedem Docker-Container ein wenig spielen, das hatte nicht immer sofort geklappt bzgl. Schreibrechte.
JSON:
volumes:
  synology-applications-filerun:
    driver: local
    driver_opts:
      type: cifs
      o: "username=dockervm,password=1234,file_mode=0750,dir_mode=0750,uid=1001,gid=1001,rw"
      device: "//192.168.100.2/homes/dockervm/Applications/Filerun"
das geht übrigens auch mit NFS shares... zumindest nutze ich in meinen Docker Containern (Homeserver) ein NFS Share von meinem unRAID NAS :)
 
  • Gefällt mir
Reaktionen: polyphase
@polyphase vielleicht ist es einfacher auf dem Host den SMB oder NFS Share zu mounten und dann in ein Docker Container zu mounten, aber ich hab damit schlechte Erfahrungen gemacht: Wenn der Host den SMB Share nicht mounten kann, weil z.B. das NAS Offline ist oder die Verbindung unterbrochen, dann schreibt der Container alle Daten in den Ordner des Hosts. Und bei mir sind solche Laufwerke öfters schon mal übergelaufen :(
 
  • Gefällt mir
Reaktionen: polyphase
Danke für den Tipp👍
 
x.treme schrieb:
Die Einbindung via Docker Compose ist super simpel. Nur mit dir_mode und uid/gid musste ich bei jedem Docker-Container ein wenig spielen, das hatte nicht immer sofort geklappt bzgl. Schreibrechte.
JSON:
volumes:
  synology-applications-filerun:
    driver: local
    driver_opts:
      type: cifs
      o: "username=dockervm,password=1234,file_mode=0750,dir_mode=0750,uid=1001,gid=1001,rw"
      device: "//192.168.100.2/homes/dockervm/Applications/Filerun"
Ja, genau da hänge ich gerade mit der postgres Datenbank für Joplin.
Du hast nicht zufällig so ne Datenbank laufen?

Code:
initdb: error: could not access directory "/var/lib/postgresql/data": Permission denied
chmod: changing permissions of '/var/lib/postgresql/data': Operation not permitted
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process


UPDATE:
Fehler gefunden!
Portainer übernimmt die Änderungen im Stack nicht, wenn man die mit dem Webeditor durchführt und den Stack updated. Man muss den Stack löschen. Wenn man dann einen neuen Stack mit dem gleichen Namen erstellt, stehen irgendwo (Cache?) noch die falschen Daten drin und er startet wieder mit diesen 🤯

uid und pid sind 999
 
Zuletzt bearbeitet:
So ein kleines Update meiner Seite

Ich habe nun einige Docker Container in meiner Testumgebung laufen:
  • Nginx Proxy Manager
    Um Lets Encrypt inkl. einheitlicher Domain für die Dienste nutzen zu können

  • Portainer
    Für die Verwaltung der Docker Compose Files (Stacks)
    Leider teilweise sehr buggy, Änderungen am Stack werden grundsätzlich nicht übernommen.
    Wenn man den Stack löscht und wieder unter gleichem Namen erstellt, sind die alten (falschen) Einstellungen wieder da, bzw. die Compose File wird einfach ignoriert.


  • pihole
    Als interner DNS Server für Webeblocking und für lokale DNS Auflösung zum Reverse Proxy

  • unbound
    Als Backend DNS Server, damit keine öffentlichen DNS notwendig sind.

  • Joplin
    Als Nachfolger für die Synology Note Station.
    Das Volume ist angebunden über ein SMB Share, damit die Daten zentral auf dem NAS liegen.

  • minidlna
    Als Nachfolger für den Synology Medienserver.
    Ist angebunden über ein SMB Share, um auf die Media Dateien auf dem NAS zugreifen zu können.

  • nextcloud
    Als möglicher Nachfolger für Synology Drive

  • drawio
    Für Zeichnungen, Mindmaps usw.

@x.treme Danke nochmal für dne Tipp mit den SMB Shares 👍

Alles noch in der Testumgebung und "provisorisch" konfiguriert. Es stehen sogar die Passwörter der Test-User-Accounts in den Docker Compose Files 😆
 
  • Gefällt mir
Reaktionen: pscriptos, Tr0nism und x.treme
polyphase schrieb:
Als Backend DNS Server, damit keine öffentlichen DNS notwendig sind.
Na öffentliche DNS-Server braucht man ja immer wenn man Internet-Domainnamen auflösen will.

polyphase schrieb:
Wozu PiHole wenn Du schon unbound hast? Die Komplexität nach oben treiben? :-)
Und filtern geht auch mit unbound direkt.
 
Zu Unbound:
Wenn man das mit Hyperlocal nutzt, dann werden nur die Root DNS Server abgefragt und das auch nicht bei jeder Anfrage.

Zu pihole:
Das treibt die Komplexität nicht nach oben, macht aber vieles einfacher.
 
Nochmal ein Update von mir:

Ich habe jetzt folgende Docker Container in meiner Testumgebung laufen:

  • Nginx Proxy Manager
    Um Lets Encrypt inkl. einheitlicher Domain für die Dienste nutzen zu können

  • Portainer
    Für die Verwaltung der Docker Compose Files (Stacks)
    (fliegt wahrscheinlich raus, da zu buggy. Außerdem möchte ich eine eigene Datei Struktur für die Compose Files über ssh managen)

  • pihole
    Als interner DNS Server für Webeblocking und für lokale DNS Auflösung zum Reverse Proxy

  • unbound
    Als Backend DNS Server, damit keine öffentlichen DNS notwendig sind.

  • Joplin
    Als Nachfolger für die Synology Note Station.
    Das Volume ist angebunden über ein SMB Share, damit die Daten zentral auf dem NAS liegen.
    (weiß ich noch nicht ob ich dabei bleibe. Hat keinen Papierkorb)

  • minidlna
    Als Nachfolger für den Synology Medienserver.
    Ist angebunden über ein SMB Share, um auf die Media Dateien auf dem NAS zugreifen zu können.

  • nextcloud
    Als möglicher Nachfolger für Synology Drive

    (rausgeflogen da zu buggy)

  • drawio
    Für Zeichnungen, Mindmaps usw.

    (rausgeflogen da ich das eigentlich nicht brauche)

  • Radicale
    Als *dav Server für Kalender, Kontakte und Aufgaben
    (neu hinzugekommen. Klein, leicht und läuft stabil)

Weiß jemand ne gute Note app, welche ähnlich wie Joplin, einen eigenen Server mitbringt und für Linux und Android einen Client bietet?
 
Bzgl. NextCloud: Versuche mal Filerun! Basiert auf Nextcloud, war bei mir aber deutlich schneller/stabiler.
Ansonsten sind Pydio und Seafile noch einen Blick wert.
polyphase schrieb:
Weiß jemand ne gute Note app, welche ähnlich wie Joplin, einen eigenen Server mitbringt und für Linux und Android einen Client bietet?
Die Suche nach einer Notes-App mit Webview und Client-Apps ist echt ne Odysee.

Was es so gibt auf dem Markt
  • Joplin (Client sehr zuverlässig und Verschlüsselung, aber kein offizieller/vernünftiger Webview)
  • Obsidian (Nur Apps, kein Webview)
  • Trilium (Nur Webview, der aber richtig gut)
  • Standardnotes (Self-Hosted, aber Abo um alle Funktionen freizuschalten)
  • Logseq (werde ich als nächstes Mal ausprovieren, sieht vielversprechend aus)
 
  • Gefällt mir
Reaktionen: polyphase
Puh,
also eher nicht so doll mit den Note Apps, dann werde ich auch mal weiterschauen 🤔


Was ich aber berichten kann, das der erste Docker Container in der Produktiv Umgebung läuft:

miniDLNA
Läuft super flott und stabil 👍
Der Synology Medienserver ist dagegen eine echte Gurke, lahm und instabil!



Habe mich aber jetzt gegen Portainer entschieden und mache das schön sauber über docker compose files.
Dort werden Änderungen auch direkt übernommen, wenn man den Container neu startet 😆

Jetzt muss ich nur noch schauen, wie ich die Passwörter der SMB Shares in ein Docker Secret verpacke.
 
  • Gefällt mir
Reaktionen: Der Lord
Zurück
Oben