web-dev-qa-db-fra.com

Comment puis-je copier Docker en tant que racine?

Lors de la création d'une image Docker, comment _ COPY un fichier dans l'image de sorte que le fichier obtenu appartienne à un utilisateur autre que root?

91
FGreg

Pour les versions v17.09.0-ce et plus récente

Utilisez l'indicateur facultatif --chown=<user>:<group> avec les commandes ADD ou COPY.

Par exemple

COPY --chown=<user>:<group> <hostPath> <containerPath>

La documentation de l'indicateur --chown est maintenant disponible sur la page principale page de référence de Dockerfile .

Le problème 426 a été fusionné et est disponible dans version v17.09.0-ce .


Pour les versions antérieures à v17.09.0-ce

Docker ne prend pas en charge COPY en tant qu'utilisateur autre que root. Vous devez chown/chmod le fichier après la commande COPY.

Exemple de fichier Docker:

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"]

Avant la v17.09.0-ce, la référence de Dockerfile pour la commande COPY disait:

Tous les nouveaux fichiers et répertoires sont créés avec un UID et un GID de 0.


Historique Cette fonctionnalité a été suivie à travers plusieurs problèmes GitHub: 6119 , 994 , 136 , 273 , 28499 , Issue 3011 .

Issue 3426 est le problème qui a implémenté la fonctionnalité d'indicateur facultatif et Issue 467 a mis à jour la documentation.

128
FGreg