Ich arbeite mit Docker und möchte einen dynamischen Ordner bereitstellen, der sich stark ändert (sodass ich nicht für jede Ausführung ein Docker-Image erstellen müsste, was zu kostspielig wäre), aber ich möchte, dass dieser Ordner schreibgeschützt ist . Das Ändern des Ordnereigentümers in eine andere Person funktioniert. Allerdings chown
erfordert root
Zugang, die ich lieber nicht zu einer Anwendung belichten.
Wenn ich das -v
Flag zum Mounten verwende, wird der von mir angegebene Benutzername angegeben. Ich habe einen Nicht-Root-Benutzer im Docker-Image erstellt. Alle Dateien auf dem Volume mit dem Eigentümer als Benutzer, der Docker ausgeführt hat, werden jedoch in den Benutzer I geändert Geben Sie über die Befehlszeile, damit ich keine schreibgeschützten Dateien und Ordner erstellen kann. Wie kann ich das verhindern?
Ich habe auch hinzugefügt mustafa ALL=(docker) NOPASSWD: /usr/bin/docker
, damit ich über das Terminal zu einem anderen Benutzer wechseln kann, aber die Dateien haben dennoch Berechtigungen für meinen Benutzer.
Antworten:
Sie können festlegen, dass ein Volume schreibgeschützt sein soll, indem Sie es
:ro
an den-v
Switch anhängen :Beachten Sie, dass der Ordner dann im Container schreibgeschützt und auf dem Host schreibgeschützt ist.
2018 Bearbeiten
Gemäß der Dokumentation zum Verwenden von Volumes gibt es jetzt eine andere Möglichkeit, Volumes mithilfe des
--mount
Switches bereitzustellen. So nutzen Sie das schreibgeschützt:Docker-Compose
Hier ist ein Beispiel für die Angabe schreibgeschützter Container in
docker-compose
:quelle
docker cp
Befehl für einen ausgeschalteten Container zu verwenden.redis:alpine:ro
Docker-Compose
Hier ist eine geeignete Methode, um das schreibgeschützte Volume in anzugeben
docker-compose
:https://docs.docker.com/compose/compose-file/#long-syntax-3
quelle
version: "3.2"
- Danke :)- './my-file.txt:/container-readonly-file.txt:ro'
untervolumes
- Anmerkung der:ro
am Ende.