[docker] Docker COPY를 루트가 아닌 것으로 어떻게 복사합니까?
Docker 이미지를 빌드하는 동안 COPY
결과 파일이 루트 이외의 사용자가 소유하도록 이미지에 파일을 어떻게 배치합니까 ?
답변
버전 v17.09.0-ce 이상
또는 옵션 --chown=<user>:<group>
과 함께 옵션 플래그 를 사용하십시오 .ADD
COPY
예를 들어
COPY --chown=<user>:<group> <hostPath> <containerPath>
–chown 플래그에 대한 문서는 이제 기본 Dockerfile 참조 페이지에 있습니다.
문제 34263 이 병합되어 릴리스 v17.09.0-ce 에서 사용할 수 있습니다 .
v17.09.0-ce 이전 버전의 경우
Docker는 COPY
루트 이외의 사용자로는 지원하지 않습니다 . 당신은 필요 chown
/ chmod
파일 후COPY
명령.
Dockerfile 예 :
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"]
v17.09.0-ce 이전의 COPY
명령에 대한 Dockerfile Reference는 다음과 같이 말했습니다.
모든 새 파일과 디렉토리는 UID와 GID가 0으로 작성됩니다.
역사
이 기능은 여러 GitHub의 문제를 추적하고있다 : 6119 , 9943 , 13600 , 27303 , 28499 , 문제 30110 .