Ao criar uma imagem do Docker, como faço COPY
para inserir um arquivo na imagem para que o arquivo resultante seja de propriedade de um usuário que não seja root?
fonte
Ao criar uma imagem do Docker, como faço COPY
para inserir um arquivo na imagem para que o arquivo resultante seja de propriedade de um usuário que não seja root?
Para as versões v17.09.0-ce e mais recentes
Use o sinalizador opcional --chown=<user>:<group>
com os comandos ADD
ou COPY
.
Por exemplo
COPY --chown=<user>:<group> <hostPath> <containerPath>
A documentação para o sinalizador --chown agora está ativa na página principal de Referência do Dockerfile .
O problema 34263 foi mesclado e está disponível na versão v17.09.0-ce .
Para versões anteriores à v17.09.0-ce
O Docker não oferece suporte COPY
como usuário que não seja root. Você precisa chown
/ chmod
o arquivo após o COPY
comando.
Dockerfile de exemplo:
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 à v17.09.0-ce, a Referência do Dockerfile para o COPY
comando dizia:
Todos os novos arquivos e diretórios são criados com um UID e GID 0.
Histórico Esse recurso foi rastreado por vários problemas do GitHub: 6119 , 9943 , 13600 , 27303 , 28499 , Edição 30110 .
O problema 34263 é o problema que implementou a funcionalidade opcional do sinalizador e o problema 467 atualizou a documentação.
chown
em 40 MB de arquivos).