¿Cómo copio Docker como no root?


Mientras compilo una imagen de Docker, ¿cómo hago COPY un archivo en la imagen para que el archivo resultante sea propiedad de un usuario que no sea root?

Author: FGreg, 2017-06-26

1 answers

Para las versiones v17.09.0-ce y posteriores

Utilice el indicador opcional --chown=<user>:<group> con los comandos ADD o COPY.

Por ejemplo

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

La documentación para la bandera --chown ahora está disponible en la página principal Dockerfile Reference page.

Cuestión 34263 se ha fusionado y está disponible en release v17.09.0-ce.


Para versiones anteriores a la versión v17.09.0-ce

Docker no soporte COPY como un usuario que no sea root. Necesitas chown / chmod el archivo después de el comando COPY.

Archivo Docker de ejemplo:

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

Anterior a v17. 09. 0-ce, la Referencia de Dockerfile para el comando COPY decía:

Todos los archivos y directorios nuevos se crean con un UID y un GID de 0.


Historia Esta característica ha sido rastreada a través de múltiples problemas de GitHub: 6119, 9943, 13600, 27303, 28499, Issue 30110 .

El problema 34263 es el problema que implementó la funcionalidad de indicador opcional y el problema 467 actualizó la documentación.

 52
Author: FGreg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-27 16:40:26