Bind-Volume wird in der Container Station-Anwendung nicht angezeigt

Hallo zusammen,

Ich betreibe ein TS-464 NAS.

Ich habe erfolgreich mehrere Container bereitgestellt und die internen Verzeichnisse über die CS-Oberfläche auf den QNAP-Host gemappt. Das funktioniert super. Alle Daten meiner Container befinden sich im Ordner /local/containers-data und in Unterordnern (je einer pro Container).

Nun versuche ich dasselbe innerhalb einer Anwendung mit der üblichen „compose“-Syntax, wie unten gezeigt:

services:
  mongo:
    platform: linux/amd64
    image:  mongo:bionic
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: zorglub
      MONGO_INITDB_DATABASE: garden-planner
    ports:
      - "27017:27017"
    volumes: 
      - type: bind
        source: /local/containers-data/garden-planner/mongo/db
        target: /data/db
      - type: bind
        source: /local/containers-data/garden-planner/mongo/configdb
        target: /data/configdb

Ich habe die Ordner /local/containers-data/garden-planner/mongo/db und configdb erstellt (ich habe es auch ohne das Erstellen der Ordner versucht).

Ich hatte erwartet, dort den Inhalt von /data/db bzw. /data/configdb zu sehen, aber sie bleiben leer.

Ich habe /data/db in der „Shell“ des Containers durchsucht und es ist korrekt befüllt.

Es gibt keine Fehler im QLog, keine Fehler im Container-Log.

Hat jemand eine Idee? Ich kämpfe schon seit Stunden damit und habe beim Googeln keinen Hinweis gefunden :sleepy_face:

Xavier

Ich habe bind nicht verwendet. Hier ist, was ich habe:

   volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/SimpleHelp/configuration:/opt/SimpleHelp/configuration
    restart: always

Oder

    volumes:
      - /share/Container/somokeping/config:/config
      - /share/Container/smokeping/data:/data

Vielleicht ist es ein Unterschied in der Syntax und wir machen eigentlich dasselbe?

Danke! Ja, es ist nur eine Frage der kurzen oder langen Syntax.

Nachdem ich deine Antwort gelesen hatte, bin ich per SSH auf das NAS gegangen und habe das Verzeichnis „/shared“ entdeckt, von dem ich nichts wusste, und unter diesem Ordner das „local“, das über FileStation zugänglich war.

Und natürlich habe ich die erwarteten Dateien im „/local/“ gefunden … genau wie in der Compose-Datei angegeben.
Also ist alles in Ordnung, wenn ich die gebundenen Volumes mit „/shared“ prefixe …

Das Seltsame ist, dass ich beim direkten Erstellen von Containern über die CS-Oberfläche nie „/shared“ angegeben habe und es trotzdem reibungslos funktioniert hat …

Nochmals vielen Dank, jetzt funktioniert es!

Xavier

Großartig!

Ja, /share ist das oberste Arbeitsverzeichnis für alles in der QNAP-Welt. Es gibt zwar noch andere Volumes und Ordner auf der Root-Ebene /, aber diese sind hauptsächlich für das Betriebssystem und nicht Teil des Benutzer-Dateisystems. OK, einige Programme wie NoteStation und andere speichern ihre Datenbanken in diesen „anderen“ Ordnern, weshalb man vor dem Löschen des NAS den Inhalt daraus exportieren sollte, sonst verliert man alles. Das habe ich auf die harte Tour herausgefunden! Aber alle „normalen“ Ordner befinden sich unter /share.

Hallo @xjimenez

Hier ist eine Referenz:

Angenommen, meine Container-Anwendung hat einen Ordner /root/apple, der mit einem bestimmten Verzeichnis auf meinem NAS „verknüpft“ werden muss, und ich entscheide mich, den Ordner Container/folder-apple auf File Station zu verwenden.

Wir haben zwei Methoden. Die erste besteht darin, beim Erstellen des Containers in der GUI zu den Erweiterten Einstellungen und Speicher zu gehen und dann Mapping mit Host auszuwählen. Im ersten Feld wählst du den Ordner /Container/folder-apple auf dem NAS als Host aus und gibst manuell den Speicherort des Containers, /root/apple, im zweiten Feld ein.

Die zweite Methode, falls du es manuell mit einer YAML-Datei erstellst, ist, einen Mount-Punkt /share/Container/folder-apple:/root/apple im Feld -volumes anzulegen.

Das /share am Anfang ist fest, /Container ist der freigegebene Ordner, den du in File Station siehst, und /folder-apple ist der Unterordner. Das :/root/apple nach dem Doppelpunkt steht für den Speicherort innerhalb deines Containers.

Nach Abschluss wird dein Container-Ordner /root/apple mit Container/folder-apple auf File Station verknüpft. Egal, ob der Container Dateien erstellt oder du Dateien in Container/folder-apple hochlädst, die Dateien sind auf beiden Plattformen sichtbar.