Ich versuche, einem Docker-Image, das aus dem Offiziellen erstellt wurde, eine Datei hinzuzufügen tomcat Bild. Dieses Bild scheint keine Root-Rechte zu haben, da ich als Benutzer angemeldet bin tomcat wenn ich bash starte:
docker run -it tomcat /bin/bashtomcat@06359f7cc4db:/usr/local/tomcat$ Wenn ich eine Anweisung gebe Dockerfile um eine Datei in diesen Container zu kopieren, verfügt die Datei über Berechtigungen 644 und der Besitzer ist root. Soweit ich weiß, scheint das vernünftig zu sein, da alle Befehle in der Docker-Datei als root ausgeführt werden. Wenn ich jedoch versuche, den Besitz dieser Datei in zu ändern tomcat:tomcat, Ich bekomme eine Operation not permitted Fehlermeldung.
Warum kann ich die Berechtigungen einer in dieses Image kopierten Datei nicht ändern?
Wie es reproduziert werden kann:
mkdir docker-addfilepermissioncd docker-addfilepermissiontouch test.txtecho 'FROM tomcatCOPY test.txt /usr/local/tomcat/webapps/RUN chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt' > Dockerfiledocker build .Die Ausgabe von docker build .:
Sending build context to Docker daemon 3.072 kBSending build context to Docker daemon Step 0 : FROM tomcat ---> 44859847ef64Step 1 : COPY test.txt /usr/local/tomcat/webapps/ ---> Using cache ---> a2ccb92480a4Step 2 : RUN chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt ---> Running in 208e7ff0ec8fchown: changing ownership of '/usr/local/tomcat/webapps/test.txt': Operation not permitted2014/11/01 00:30:33 The command [/bin/sh -c chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt] returned a non-zero code: 1