Verwenden von Host-Umgebungsvariablen mit Dockerfile

8

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?

    
alkalinity 13.01.2015, 14:58
quelle

3 Antworten

10

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.

    
ISanych 13.01.2015, 15:24
quelle
1

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 .

    
Usman Ismail 13.01.2015 15:03
quelle
1

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.

    
mixel 30.03.2017 23:06
quelle

Tags und Links