Zugriff auf Volume im Docker-Container erforderlich

Hallo zusammen,

ich habe eine Support-Anwendung, SimpleHelp, die ich in einem Docker-Container in Container Station betreibe. Es funktioniert großartig, aber ich habe ein Problem: Ich kann die SimpleHelp-Software nicht aktualisieren, wenn neue Versionen erscheinen. Natürlich könnte ich jedes Mal einen neuen Container erstellen, aber das ist mühsam und ich müsste jedes Mal alle meine Einstellungen neu konfigurieren.

Was ich gerne machen würde, ist entweder auf die Datei im Container zuzugreifen oder den Container so einzurichten, dass ich ein Verzeichnis auf meinem NAS nutzen kann. Ich habe versucht, das über das Erstellen eines Volumes mit dem Container herauszufinden, aber es ist nicht eindeutig und ich stoße immer wieder auf Probleme, weil beim Erstellen eines Volumes ein Containername verlangt wird und jeder Containername, den ich eingebe, ein ungültiger Pfad ist. Ich stecke also fest.

Es muss doch sicherlich eine Möglichkeit geben, das zu machen, deshalb frage ich hier.

Danke!

Du würdest es mit einer Compose-Datei einrichten und die Konfiguration sowie die Daten in permanenten Ordnern auf deinem NAS speichern

z.B.

Danke, aber ehrlich gesagt habe ich absolut keine Ahnung, wie das geht! Ich bin ganz neu bei Docker und weiß nicht, wie man ein Compose-Skript schreibt…

Würde ich das hier hinzufügen?

    volumes:
       - /etc/timezone:/etc/timezone:ro
       - /etc/localtime:/etc/localtime:ro
       - /opt/appdata/simplehelp/configuration:/opt/SimpleHelp/configuration

Und würde ich einfach den Standard-QNAP-Pfad zum Ordner verwenden? Die oben genannten Pfade sind alle lokal zum Container – richtig? Wie gebe ich also einen Pfad außerhalb des Containers an?

sollte sein

/share/‘sharename’

OK. Also müsste es so aussehen:

    volumes:
       - /etc/timezone:/etc/timezone:ro
       - /etc/localtime:/etc/localtime:ro
       - /opt/appdata/simplehelp/configuration:/share/Container/SimpleHelp

Ist das alles?

Andersherum … zuerst der lokal gemountete Speicherort, dann der interne Container-Speicherort

- /share/Container/SimpleHelp:/opt/appdata/simplehelp/configuration

OK. Muss ich danach :rw angeben oder read/write oder einfach so lassen?

Du kannst … Ich glaube, der Standard ist rw und ro wird durch dieses Flag gesetzt.

Zum Beispiel würdest du die Plex-Medienordner auf ro setzen, damit eine Malware-Infektion des Containers deine Mediendateien nicht löschen kann.

OK. Danke. Ich werde das ausprobieren.

Gibt es jetzt eine Möglichkeit, bestehende Container-Dateien vom NAS zu lesen? Ich habe das bisher nicht herausfinden können. Ist das nicht möglich?

Sie können die erstellten Volumes über WinSCP (für eine einfache grafische Oberfläche) durchsuchen und einfach zu dem hier gezeigten Speicherort gehen


Ja, ich habe mit meinem aktuellen Container keine Volumes. Ich habe ihn einfach mit dem Assistenten aus dem Repository erstellt.

Im File Station kann ich in folgendes Verzeichnis gehen:

/Container/container-station-data/lib/docker/containers/aa5528825f8a5980c5caffbc046d9057ee10f0fadea6a932697fb5fac51ce90c

Aber dort gibt es nichts Nützliches. Ist das der Ort, an dem ich WinSCP brauche?

Hmm … du kannst versuchen, eine Container-SSH-Sitzung hinzuzufügen und direkt mit dem Container zu verbinden (sollte auch über SSH funktionieren).

Ich kann eine Konsole für den Container öffnen, aber ich finde nicht heraus, wie ich aus ihm herauskomme…

OK. Ich habe etwas falsch gemacht. Ich habe die YML-Datei genommen und sie so geändert, dass das lokale Volume zum Speichern der Daten hinzugefügt wird, wie wir besprochen hatten. Ich habe dies als Anwendung in ContainerStation erstellt. Aber es wurde keine Anwendung angezeigt. Allerdings ist ein weiteres Docker-Image unter Images erschienen. Also habe ich dieses installiert und gestartet, aber im Ordner, den ich auf dem NAS zum Speichern der Daten erstellt habe, wird nichts abgelegt.

Ich habe dasselbe Docker-Image heruntergeladen, das du verwendet hast, und die Standardinstallation hatte 3 NAT-Portzuordnungen enthalten
SSH
HTTP
HTTPS

Versuche, ob du dich über SSH verbinden kannst.

Leider nein. Die Verbindung wird abgelehnt. Ich kann jedoch die SimpleHelp-Admin-App verwenden, um ein Backup meiner Serverdaten zu erstellen. Wenn ich jetzt herausfinde, wie ich diese Daten in einem zugänglichen Ordner auf meinem NAS speichern kann, sollte ich in der Lage sein, mein Backup wiederherzustellen. Aber mein Versuch mit der YML-Datei schien nicht zu funktionieren. Lassen Sie uns also darauf konzentrieren…

Es sieht so aus, als ob die App nicht erstellt wird:

Fehler beim Erstellen der Anwendung "simplehelp". Fehlermeldung: operateApp-Aktion [--project-name simplehelp up -d --remove-orphans] fehlgeschlagen: exit status 1: time="2025-03-27T12:19:37-05:00" level=warning msg="/share/CACHEDEV2_DATA/.qpkg/container-station/data/application/simplehelp/docker-compose.yml: Das Attribut 'version' ist veraltet, es wird ignoriert, bitte entfernen Sie es, um mögliche Verwirrung zu vermeiden" Netzwerk frontbridge als extern deklariert, konnte aber nicht gefunden werden

Kannst du die Compose-Datei posten?

version: "3.2"

services:
#SimpleHelp Container
  simplehelp:
    image: tecneo/simplehelp
    container_name : simplehelp
    ports:
      - "8680:80"
      - "8681:80/udp"
      - "8643:443"
      - "8643:443/udp"
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/SimpleHelp/configuration:/opt/SimpleHelp/configuration
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.simplehelp.rule=Host(`SUBDOMAIN.DOMAIN.EXT`)"
      - "traefik.http.routers.simplehelp.entrypoints=web,websecure"
      - "traefik.http.routers.simplehelp.tls.certresolver=myresolver"
      - "traefik.http.services.simplehelp.loadbalancer.server.port=80"
      - "traefik.udp.routers.simplehelp-udp.entrypoints=webudp"
      - "traefik.udp.routers.simplehelp-udp.service=simplehelp"
      - "traefik.udp.services.simplehelp.loadbalancer.server.port=80"
    networks:
      - frontbridge
      
networks:
  frontbridge:
    external: true

Ich habe nur den Namen dieses Pfades geändert, im Vergleich zu dem, was im GitHub-Link stand, den du gepostet hast.

Funktioniert bei mir einwandfrei, wenn ich den Netzwerkabschnitt entferne (war weiter oben sowieso schon als NAT definiert)

services:
#SimpleHelp Container
  simplehelp:
    image: tecneo/simplehelp
    container_name : simplehelp
    ports:
      - "8680:80"
      - "8681:80/udp"
      - "8643:443"
      - "8643:443/udp"
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/SimpleHelp/configuration:/opt/SimpleHelp/configuration
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.simplehelp.rule=Host(`SUBDOMAIN.DOMAIN.EXT`)"
      - "traefik.http.routers.simplehelp.entrypoints=web,websecure"
      - "traefik.http.routers.simplehelp.tls.certresolver=myresolver"
      - "traefik.http.services.simplehelp.loadbalancer.server.port=80"
      - "traefik.udp.routers.simplehelp-udp.entrypoints=webudp"
      - "traefik.udp.routers.simplehelp-udp.service=simplehelp"
      - "traefik.udp.services.simplehelp.loadbalancer.server.port=80"

Der Konfigurationsordner wird bei mir erfolgreich gefüllt