Ich versuche, Dateien in einem Docker-Gast mithilfe der Volume-Freigabe freizugeben. Um die gleiche UID und damit die Interoperabilität mit diesen Dateien zu erhalten, möchte ich einen Benutzer im Docker-Gast mit der gleichen UID wie mein eigener Benutzer erstellen.
Um die Idee zu testen, habe ich die folgende einfache Docker-Datei geschrieben:
%Vor% Beim Testen mit docker build -t=docktest .
und dann docker run docktest ls -al /root
wird angezeigt, dass die Datei einfach den Namen uid-
hat.
Gibt es eine Möglichkeit, Host-Umgebungsvariablen während des Gast-Build-Prozesses mit Docker zu teilen?
Die Umgebung wird nicht freigegeben. Sie können die Optionen -e, --env verwenden, um env-Variablen im Container festzulegen.
Normalerweise verwende ich diesen Ansatz, wenn ich den gleichen Besitzer des abgebildeten Volumens haben möchte: Ich überprüfe uid & amp; gid des Verzeichnisses im Container und erstellen Sie dann einen entsprechenden Benutzer. Hier mein Skript (setuser.sh), das einen Benutzer für ein Verzeichnis erstellt:
%Vor%Und dies ist das Wrapper-Skript, das Befehle als Benutzer ausführt, wobei das Verzeichnis mit Berechtigungen entweder als $ USER_DIR oder in / etc / user_dir
angegeben ist %Vor%P.S. Alleo schlug einen anderen Ansatz vor: die Zuordnung von Benutzern und Gruppen zu Containern und die Angabe von uid und gid. Daher hängt Ihr Container nicht von integrierten Benutzern / Gruppen ab, Sie können ihn ohne zusätzliche Skripts verwenden.
Dies ist nicht möglich und wird wahrscheinlich nie möglich sein, weil die Konstruktionsphilosophie das Bauen unabhängig von Maschinen hält. Problem 6822 .
Ich habe @ISanych Antwort leicht modifiziert:
%Vor% setuser
function akzeptiert Benutzer- und Gruppennamen, die Sie uid und gid des angegebenen Verzeichnisses zuweisen möchten. Wenn dann ein Benutzer mit einer solchen Benutzerkennung vorhanden ist, gibt er einfach einen Benutzernamen zurück, der dieser Benutzerkennung entspricht, andernfalls erstellt er Benutzer und Gruppe und gibt die ursprünglich an die Funktion übergebene Benutzeranmeldung zurück.
Damit erhalten Sie den Benutzernamen des Benutzers, der das Zielverzeichnis besitzt.
Tags und Links docker