[docker] Docker COPY를 루트가 아닌 것으로 어떻게 복사합니까?

Docker 이미지를 빌드하는 동안 COPY결과 파일이 루트 이외의 사용자가 소유하도록 이미지에 파일을 어떻게 배치합니까 ?



답변

버전 v17.09.0-ce 이상

또는 옵션 --chown=<user>:<group>과 함께 옵션 플래그 를 사용하십시오 .ADDCOPY

예를 들어

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 .

문제 34263 은 선택적 플래그 기능을 구현 한 문제이며 문제 467 은 설명서를 업데이트했습니다.


답변