242 votes

Comment puis-je copier Docker en tant que root?

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?

355voto

FGreg Points 1436

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X