Al crear una imagen de Docker, ¿cómo agrego COPY
un archivo a la imagen para que el archivo resultante sea propiedad de un usuario que no sea root?
fuente
Al crear una imagen de Docker, ¿cómo agrego COPY
un archivo a la imagen para que el archivo resultante sea propiedad de un usuario que no sea root?
Para versiones v17.09.0-ce y posteriores
Use la bandera opcional --chown=<user>:<group>
con los comandos ADD
o COPY
.
Por ejemplo
COPY --chown=<user>:<group> <hostPath> <containerPath>
La documentación para el indicador --chown ahora está activa en la página principal de referencia de Dockerfile .
El número 34263 se ha fusionado y está disponible en la versión v17.09.0-ce .
Para versiones anteriores a v17.09.0-ce
Docker no es compatible COPY
como usuario que no sea root. Necesita chown
/ chmod
el archivo después del COPY
comando.
Dockerfile 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"]
Antes de v17.09.0-ce, la referencia de Dockerfile para el COPY
comando decía:
Todos los archivos y directorios nuevos se crean con un UID y GID de 0.
Historial Esta función ha sido rastreada a través de múltiples problemas de GitHub: 6119 , 9943 , 13600 , 27303 , 28499 , problema 30110 .
El problema 34263 es el problema que implementó la funcionalidad de marca opcional y el problema 467 actualizó la documentación.
chown
en 40 MB de archivos).