Lors de la création d'une image Docker, comment puis-je COPY
un fichier dans l'image de sorte que le fichier résultant soit la propriété d'un utilisateur autre que root?
Réponse
Trop de publicités?Pour les versions v17.09.0-ce et plus récent
Utilisez l'option d'indicateur --chown=<user>:<group>
avec l' ADD
ou COPY
des commandes.
Par exemple
COPY --chown=<user>:<group> <hostPath> <containerPath>
La documentation de l' --chown drapeau est maintenant en direct sur les principales Dockerfile page de Référence.
Question 34263 a été fusionnée et est disponible en version v17.09.0-ec.
Pour les versions antérieures à la version v17.09.0-ec
Docker ne prend pas en charge COPY
comme un utilisateur autre que root. Vous avez besoin d' chown
/ chmod
le fichier après l' COPY
commande.
Exemple Dockerfile:
from centos:6
RUN groupadd -r myuser && adduser -r -g myuser myuser
USER myuser
#Install code, configure application, etc...
USER root
COPY run-my-app.sh /usr/local/bin/run-my-app.sh
RUN chown myuser:myuser /usr/local/bin/run-my-app.sh && \
chmod 744 /usr/local/bin/run-my-app.sh
USER myuser
ENTRYPOINT ["/usr/local/bin/run-my-app.sh"]
Précédente à v17.09.0-ce, le Dockerfile de Référence pour l' COPY
commande dit:
Tous les nouveaux fichiers et les répertoires sont créés avec un UID et le GID de 0.
L'histoire Cette fonctionnalité a été suivi par plusieurs GitHub questions: 6119, 9943, 13600, 27303, 28499, Question 30110.
Question 34263 est la question que la mise en œuvre de l'option drapeau de la fonctionnalité et de la Question 467 mise à jour de la documentation.