dockerfile로 docker image를 만들때,
어떤 파일을 image에 포함하고자 한다고 하자.
FROM docker.elastic.co/logstash/logstash:7.16.1
COPY jihoon.zip /usr/share/logstash/

이렇게 파일을 추가하면 항상 파일의 권한이 root이다.
파일의 권한을 바꾸고 싶다고 할때,
아래 RUN 명령어로 권한을 바꿀 수 있는 명령어를 추가하는 방법을 생각해볼수 있다.
FROM docker.elastic.co/logstash/logstash:7.16.1
COPY jihoon.zip /usr/share/logstash/
RUN chown logstash:logstash /usr/share/logstash/jihoon.zip

이렇게 했을때 문제는,
최종이미지에 jihoon.zip 파일의 용량이 두배만큼 고려된다.
처음 jihoon.zip이 COPY 되었을때 하나의 layer가 생성되고,
RUN을 실행하면서 또 하나의 layer가 생성되는데,
root 권한으로 설정된 jihoon.zip이 삭제되지 않고 하나의 layer을 형성하면서 그대로 남기 때문

Solution

ADD/COPY 명령어를 쓸때 --chown 옵션을 쓸수 있다.
FROM docker.elastic.co/logstash/logstash:7.16.1
COPY --chown=logstash:logstash jihoon.zip /usr/share/logstash/


참고 : https://medium.com/@lmakarov/the-backlash-of-chmod-chown-mv-in-your-dockerfile-f12fe08c0b55