staging.inyokaproject.org

Docker: erstellter Container ändert Benutzerrechte von Volume

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

sdoubleu

Anmeldungsdatum:
2. Oktober 2010

Beiträge: 76

Hallo zusammen,

ich habe auf meinem Fileserver einen Ordner erstellt

1
sudo mkdir /mnt/hdd1/download

Dananch habe ich die Benutzerrechte angepasst

1
sudo chown -R media:users /mnt/hdd1/download

Wenn ich jetzt einen Docker Container (mittels composer file) mit den folgenden Volumen erstelle

1
2
    volumes:
      - /mnt/hdd1/download:/output

Dann besitzt der Ordner /mnt/hdd1/download nicht mehr die am Anfang geänderten Benutzerrechte media:users sondern jetzt root:root, quasi die Rechte des Benutzers, der den Container erstellt hat.

  1. Kann ich das irgendwie verhindern?

  2. Gibt es eine andere Möglichkeit, wie ich den Benutzern aus der Gruppe users lesende und schreibende Rechte auf den Ordner /mnt/hdd1/download gewähren kann?

Es bringt ja nichts die Benutzerrechte nach dem erstellen des Docker Containers wieder zu ändern, da beim nächste Update / Erstellen die Benutzerrechte wieder auf root:root stehen.

Vielen Dank für eure Ideen, Tipps und Vorschläge.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17277

Dein Docker Image/Container muss die UID/GID verwenden die auch am Host für den Ordner verwendet wird. Leider hast du keine weiteren Angaben zu dem Image/Container gemacht.

Technisch kannst du auch mit ACLs sicherstellen das der User immer die passenden Rechte hat, aber auch das kann der Container überschreiben wie er lustig ist. Ein Pfad der an einen Container gebunden ist, gehört dem Container.

Am besten ist es, mit passender UID/GID und der USER direktive im Dockerfile dafür zu sorgen das der richtige User verwendet wird. Für mehr müsstest du mehr an Details liefern.

These: Du baust kein Docker Image selbst, und bist daher hier auch im falschen Unterforum?

sdoubleu

(Themenstarter)

Anmeldungsdatum:
2. Oktober 2010

Beiträge: 76

Danke für die Antwort.

@admin, wenn möglich bitte ins richtige Unterforum verschieben, Danke.

Wenn ich das richtig verstehe, dann müsste ich meine Compose Datei folgendermaßen erweitern:

1
2
3
    volumes:
      - /mnt/hdd1/download:/output
    user: 1001:100

Auf meinem System hat der User media die ID 1001 und die Gruppe users die ID 100. Wäre das so richtig? Und dann verwendet der Container die entsprechenden Benutzerrechte für den Ordner? Oder muss ich den Benutzer und die Gruppe auch im Docker selbst erstellen?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17277

Normal legt man einen User mit entsprechender GID/UID im Container an (z.b. mit dem Dockerfile). Theoretisch kann auch dein Hack/Methode funktionieren, kommt aber auf den Container an und ist Pauschal nicht so zu beantworten.

sdoubleu

(Themenstarter)

Anmeldungsdatum:
2. Oktober 2010

Beiträge: 76

Danke für die Antwort. Leider verstehe ich es noch nicht so ganz.

encbladexp schrieb:

Normal legt man einen User mit entsprechender GID/UID im Container an (z.b. mit dem Dockerfile)

Mit der Annahme, dass ich jetzt nichts durcheinander bringe...

Meinst du damit,

  1. wenn ich mittels composer Datei (docker-composer.yml) aus dem Image den Container erstelle?

  2. Oder wenn man mit Hilfe des Dockerfile das Image erstellt?

Wenn ersteres gemeint ist, wie würde denn dann in meinem Fall der Eintrag in der composer Datei theoretisch lauten?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17277

Kannst du machen wie du willst, entweder weil du das Docker Image selbst baust, dann ist das Dockerfile die beste Option, oder du nimmst die Möglichkeit von Compose: https://docs.docker.com/compose/compose-file/#user

sdoubleu

(Themenstarter)

Anmeldungsdatum:
2. Oktober 2010

Beiträge: 76

Ich habe mir jetzt nochmal die Doku/Beschreibung zu den bereitgestellten Dockerimage angesehen und habe entdeckt (hatte ich irgendwie beim ersten Mal überlesen), dass die Option (USER_ID, GROUP_ID, UMASK) zum erstellen des Containers vorhanden sind. Somit funktioniert jetzt alles wie ich es mir gewünscht habe.

Vielen Dank für Eure Hilfe und Tipps!

Antworten |