전공영역 공부 기록

Dockerfile Add, COPY 명령어 차이점

악분 2021. 12. 17. 22:47
반응형

dockerfile에서 파일을 복사하는 명령어가 2개 있습니다. 바로 ADD와 COPY입니다.

docker문서[1]에서는 일반적으로 COPY를 선호해서 사용한다고 설명되어 있는데요. 그 이유는 투명성때문입니다. 쉽게 설명하면 이력 추적이 가능한지 확인하는 것입니다. COPY는 투명성이 있고 ADD는 투명성이 없는데요. 그 이유를 이 글에서 다루려고합니다.

 

COPY명령어

dockerfile 예제는 https://github.com/choisungwook/portfolio/tree/master/documentation/docker/addcopy에 있습니다. 

COPY명령어는 파일을 그대로 복사하는 명령어입니다. 복사만 할 뿐 어떠한 행동도 하지 않습니다.

COPY명령어 동작

 

컨테이너를 직접 실행하고 파일을 확인하면 hello.tar파일이 보입니다. 의도한대로 파일이 잘 복사되었습니다.

COPY명령어 결과

 

ADD 명령어

dockerfile 예제는 https://github.com/choisungwook/portfolio/tree/master/documentation/docker/addcopy에 있습니다. 

 

ADD명령어는 압축파일이면 압축을 해제한 상태로 파일을 복사합니다. 그래서 관리자 입장에서는 파일이 어디서 생겼는지 추적할 수가 없습니다. docker문서[1]에서는 추적이 불가능하다는 것을 투명성이 없다라고 표현한 것입니다. 

ADD 명령어 동작

 

직접 컨테이너에 들어가서 파일을 확인하면 압축파일은 없고 압축이 풀어진 파일이 보입니다.

ADD 명령어 실행결과

 

그 이외에도 파일을 복사하지 않고 다운로드하는 기능이 있습니다. 

파일다운로드 결과

 

참고자료

[1] docker best practice 공식문서: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

 

todo

반응형