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?
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.