"Operation not permitted" beim Zugriff auf ein NFS-eingebundenes Verzeichnis im Docker-Container

Ich arbeite an einer Web-App, die Zugriff auf das Dateisystem eines QNAP-NAS benötigt, um darin Verzeichnisse und Dateien zu bearbeiten und anzulegen.

Um das NFS im Docker-Container einzubinden, habe ich folgende Docker Compose Datei benutzt:

services:
  app:
    ... # Irrelevante Sachen
    volumes:
      - .:/app 
      - "nfs-base:/Z" # Das NFS-Volume wird im Container auf das /base Verzeichnis gemountet

volumes:
  nfs-base:
    driver: local
    driver_opts:
      type: nfs
      o: "nfsvers=4,addr=IPADRESSE_DES_QNAP-NAS,rw"
      device: ":/"


Beim Erstellen des Volumes erhalte ich keinen Fehler und wenn ich den Container untersuche, wird das Verzeichnis :/Z/base erstellt. Das bedeutet, dass der freigegebene Ordner base des QNAP-Dateisystems korrekt gemountet, oder zumindest von der docker-compose Datei erkannt wird.

Das Problem entsteht, wenn ich im Container überprüfe, ob die Dateien in :/Z/base richtig eingebunden wurden.

Wenn ich im Container auf das /base Verzeichnis zugreifen möchte, bekomme ich den Fehler: bash: cd: base/base: Operation not permitted.

Wenn ich die Berechtigungen des Ordners im Container überprüfe, erhalte ich folgende Ausgabe:

drwxrwxrwx 28 1000 root 4096 Mai 10 09:04 base

Ich vermute, das Problem hängt mit den Berechtigungen für den Zugriff auf den geteilten Ordner zusammen – da ich ganz neu bei QNAP bin, weiß ich aber nicht, wie ich diese Berechtigungen vergeben kann.

Hinweis: Wenn ich vom selben Host, auf dem der Docker-Container läuft, per SSH auf das QNAP-NAS-Verzeichnis /base zugreife, habe ich keinerlei Berechtigungsprobleme und kann alle Dateien im base-Ordner öffnen.

Wie kann ich dem Docker-Container Lese-/Schreibrechte auf ein per NFS gemountetes Verzeichnis geben?

Da Ihr NAS wie gewohnt erreichbar ist, liegt das Problem vermutlich nicht auf Seiten des NAS. Dennoch wird unser Team aufgrund Ihrer Anfrage Ihre Situation prüfen, um zu sehen, ob wir etwas analysieren oder unterstützen können. Vielen Dank, dass Sie sich bei uns gemeldet haben!

Ich bin mir nicht sicher, ob das etwas bringt, aber hast du dir schon mal die NFS-Freigabeeinstellungen im Abschnitt “Freigegebene Ordner” in der Systemsteuerung angeschaut?

Du solltest vielleicht prüfen, ob deine Freigabeeinstellungen uneingeschränkten Zugriff auf das Volume erlauben. Das könnte mit dem Container einen Unterschied machen, muss aber nicht – einen Versuch ist es auf jeden Fall wert.

Unser Team möchte Sie bitten, zu überprüfen, ob Ihre NFS-Berechtigungen korrekt konfiguriert sind, einschließlich:

  • NFS ist für den Ordner aktiviert

  • Die IP / das Subnetz darf eine Verbindung herstellen

  • Lese- / Lese- und Schreibrechte sind aktiviert

  • Versuchen Sie außerdem, “Squash no user” auszuwählen

Könnten Sie außerdem testen, ob die folgende Änderung Ihrer YAML funktioniert?

services:
  app:
    volumes:
      - nfs-base:/base

volumes:
  nfs-base:
    driver: local
    driver_opts:
      type: nfs
      o: "addr=IPADDRESS_OF_THE_QNAP-NAS,nfsvers=4,rw"
      device: ":/base"

Danke!