2017-04-25 5 views
0

Ich bin ein relativer Neuling zu Docker, also bitte bitte mit mir, wenn die Antwort offensichtlich ist.Docker - Feed Daten aus dem schreibgeschützten Verzeichnis auf dem Host in Container

Ich versuche, meinem Docker-Container Zugriff auf ein freigegebenes Datenverzeichnis auf dem Host zu geben, das über bestimmte Gruppenberechtigungen verfügt und für die Gruppe des vorgesehenen Benutzers schreibgeschützt ist.

Ich habe bereits versucht docker run -it -v /data:/data ubuntu /bin/bash mit dem resultierenden Fehler docker: Error response from daemon: error while creating mount source path '/data': mkdir /data: permission denied. Es ist also eindeutig ein Erlaubnisproblem.

Der Kern, den ich auf google sah, ist, dass, wenn Sie ein Volume binden, müssen Sie Lese-Schreib-Erlaubnis haben. Also ich suche einen alternativen Weg, möglicherweise mit docker volume?

Das Datenverzeichnis ist riesig, daher ist jede Art von Duplizierung nicht möglich. Auch das Ändern von Berechtigungen ist nicht möglich.

Systeminfo:

docker Server Version: 17.03.1-ce

Operating System: Ubuntu 16.04.2 LTS


EDIT:

Also habe ich es schließlich nach dem hilfreichen Kommentar von @barat herausgefunden.

Das Problem war, dass das genaue Verzeichnis, das ich versuchte, in den Container zu mounten, die Berechtigungen so eingerichtet hatte, dass nur Mitglieder einer bestimmten Gruppe den Inhalt lesen konnten. Ich habe alles von docker run -u userwithaccess, docker run --privileged versucht, einen Benutzer innerhalb der Dockerfile hinzuzufügen und spezifisch die fragliche Gruppe diesem Benutzer zuzuweisen. Nichts hat geklappt.

Am Ende war die Lösung relativ einfach:

Das übergeordnete Verzeichnis meiner Daten Verzeichniszugriff für alle gelesen hatte, das heißt auch Benutzer, die nicht Mitglieder der Gruppe waren. So konnte ich es ohne Probleme montieren. Um die tatsächlichen Daten zu erreichen, habe ich den Benutzer in Dockerfile zu die Gruppe hinzugefügt und sichergestellt, dass es den gleichen Namen und GID hatte. Schließlich war es kein Problem, in das Datenverzeichnis zu navigieren und jede gewünschte Datei zu lesen.

So bin ich mir nicht sicher, ob das Verzeichnis, das ich zu mounten versuchte, nur ein Sonderfall ist oder ob es generell nicht möglich ist, ein Verzeichnis mit bestimmten Gruppenzugängen zu mounten. Ich fand diese Problemumgehung, aber ich hätte immer noch keine Lösung, wenn das Verzeichnis, das ich wollte, bei / gewesen wäre.

+0

Haben Sie versucht, es in 'privileged' Modus laufen zu lassen? – tgogos

+0

ja, leider mit dem gleichen Ergebnis – Val

Antwort

0

Versuchen Sie folgendes:

docker run -v /path/on/host:/path/on/container:ro my/image 

Standardverhalten von bind Montage rw ist, aber Sie können wechseln dies nur zu lesen (: ro)

+0

gibt mir die gleiche Fehlermeldung wie oben erwähnt – Val

+1

hat Docker Benutzer/Gruppe Lesezugriff auf diesen Pfad auch?Weil IMO "docker etwas" Mounts usw. als "docker" Benutzer, plus wenn Sie "docker" Gruppe erstellt haben - Docker wird überprüfen, ob der aktuelle Benutzer in dieser Gruppe ist, so dass Sie docker Befehle ohne sudo verwenden können ... dies könnte bedeutet, dass die Docker-Gruppe zumindest (?) Lesezugriff auf diesen Pfad haben sollte ... – barat

+0

Das Problem ist, ich habe keinen Einfluss auf Berechtigungen, was bedeutet, dass ich weiß, dass die Docker-Gruppe keinen Zugriff auf das Verzeichnis hat. Und mit Docker Benutzer meinen Sie den Benutzer, der die Docker Befehle aufruft? Dieser hat Zugang, und ich habe versucht, dies ohne Erfolg an den Container weiterzugeben ... – Val

Verwandte Themen