J'essaie d'ajouter un fichier à une image Docker construite à partir de l' tomcat
image officielle . Cette image ne semble pas avoir de droits root, car je suis connecté en tant qu'utilisateur tomcat
si j'exécute bash:
docker run -it tomcat /bin/bash
tomcat@06359f7cc4db:/usr/local/tomcat$
Si je demande à un Dockerfile
de copier un fichier dans ce conteneur, le fichier a des autorisations 644
et le propriétaire l'est root
. Pour autant que je sache, cela semble raisonnable car toutes les commandes du Dockerfile sont exécutées en tant que root. Cependant, si j'essaye de changer la propriété de ce fichier en tomcat:tomcat
, j'obtiens une Operation not permitted
erreur.
Pourquoi ne puis-je pas modifier les autorisations d'un fichier copié sur cette image?
Comment le reproduire:
mkdir docker-addfilepermission
cd docker-addfilepermission
touch test.txt
echo 'FROM tomcat
COPY test.txt /usr/local/tomcat/webapps/
RUN chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt' > Dockerfile
docker build .
La sortie de docker build .
:
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon
Step 0 : FROM tomcat
---> 44859847ef64
Step 1 : COPY test.txt /usr/local/tomcat/webapps/
---> Using cache
---> a2ccb92480a4
Step 2 : RUN chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt
---> Running in 208e7ff0ec8f
chown: changing ownership of '/usr/local/tomcat/webapps/test.txt': Operation not permitted
2014/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
root
? Pourquoi ne tiennent-ils pas compte de laUSER
directive?