2015-09-02 12 views
5

Ich möchte Dateiberechtigungen für Dateien einrichten, die ich einem Docker-Image hinzufüge. Ich habe diese einfache Dockerfile:Dateibesitz beim Erstellen von Docker-Images

FROM ubuntu:utopic 

WORKDIR /app 
RUN groupadd -g 1000 baz && useradd -u 1000 -g baz baz -d /app -s /bin/false 
RUN chown baz:baz /app && chmod g+s /app 
# want this to be have group baz 
ADD foo /app/ 

Aufbau dieses mit docker build -t abc ., wo es eine foo Datei in . ein Bild erzeugt. Allerdings sind die Berechtigungen auf /app/foo im Inneren nicht was ich will.

docker run abc ls -la  
total 12 
drwxr-xr-x 2 baz baz 4096 Sep 2 23:21 . 
drwxr-xr-x 37 root root 4096 Sep 3 07:27 .. 
-rw-rw-r-- 1 root root 419 Sep 2 21:43 foo 

Beachten Sie, dass foo Datei gehört nicht baz trotz the setgid bit zu Gruppe auf dem /app dir eingestellt wird. Ich konnte RUN chown -R baz:baz /app verwenden, nachdem Sie die Dateien hinzufügen, aber das casues die eine Kopie der Ebene geschaffen werden (Beachten Sie die Größe der beiden Schichten unten):

docker history abc | head -n 3 
IMAGE    CREATED    CREATED BY          SIZE    COMMENT 
b95a3d798873  About a minute ago /bin/sh -c chown -R baz:baz /app    419 B    
7e007196c116  About a minute ago /bin/sh -C#(nop) ADD file:2b91d9890a9c392390 419 B 

Gibt es eine Möglichkeit, dies zu umgehen und haben der Besitz von Dateien hinzugefügt werden, was ich will?

+1

Gibt nicht der Ausgang '-rw-rw-r-- 1 baz baz 419 Sep 2 21:43 foo 'an, dass' foo' zur Gruppe 'baz' gehört? –

+0

@WaleedKhan Ich hatte die falsche Ausgabe eingefügt. Das war von einem Lauf, bei dem ich die Foo-Datei chmodierte, nachdem ich sie dem Bild hinzugefügt hatte. –

+0

Gibt es einen bestimmten Grund, warum Sie nicht möchten, dass die Eigentümerschaft/Gruppe als separater Schritt/Layer angegeben wird? –

Antwort