스택큐힙리스트

Dockerfile에서 'COPY' 및 'ADD' 명령어의 차이점은 무엇인가요? 본문

카테고리 없음

Dockerfile에서 'COPY' 및 'ADD' 명령어의 차이점은 무엇인가요?

스택큐힙리스트 2023. 3. 15. 13:29
반응형

도커파일에서 COPY와 ADD 명령어의 차이는 무엇이며, 어느 경우에 어떤 것을 사용해야 할까요?

COPY

COPY 명령어는 새로운 파일을 에서 복사하여 경로의 컨테이너 파일시스템에 추가합니다.

ADD

ADD 명령은 새 파일을 에서 복사하여 경로의 컨테이너 파일 시스템에 추가합니다.

답변 1

더 자세한 설명을 위해 #ADD 와 COPY 설명서를 확인해야 하지만, 요약하자면, 주요 차이점은 #ADD 가 COPY 보다 더 많은 작업을 할 수 있다는 것입니다.

ADD은 이 URL이 될 수 있도록 합니다.

아래 댓글을 참조하면, ADD documentation는 다음과 같이 제시합니다:

만약 인식 가능한 압축 형식 (identity, gzip, bzip2, xz)으로 된 로컬 tar 아카이브라면 디렉토리로 풀립니다. 원격 URL에서 가져온 자원은 압축 해제되지 않습니다.

Best practices for writing Dockerfiles에 따르면, COPY를 사용하면 ADD의 마법이 필요하지 않은 경우가 있습니다. 그렇지 않으면, 이 답변을 찾아보았기 때문에 언젠가는 keep_this_archive_intact.tar.gz를 컨테이너로 복사하고자 하는데 대신 파일 시스템에 내용물을 뿌리게 될 수도 있습니다.

답변 2

더커(Docker) 이미지를 만들 때, 'COPY'와 'ADD' 명령어를 사용하는 경우가 많은데, 이 둘은 어떤 차이가 있을까요? 이번 글에서는 'COPY'와 'ADD' 명령어의 차이점에 대해 알아보려고 합니다.

우선 'COPY' 명령어는 로컬 파일 시스템에서 파일이나 폴더를 이미지 안으로 복사하는 명령어입니다. 즉, 파일 또는 폴더를 컨테이너 내부로 옮길 때 사용됩니다. 'COPY' 명령어는 기본적으로 파일 권한을 유지하기 때문에, 복사된 파일의 소유자, 그룹, 권한 등은 원본 파일과 동일합니다.

반면 'ADD' 명령어는 'COPY' 명령어와 유사하지만, 조금 더 기능이 많은 명령어입니다. 'ADD' 명령어는 로컬 파일 시스템에서 파일 뿐만 아니라 원격 파일(URI 형식), 압축 파일(tar, gzip, bzip2 등) 등을 컨테이너 내부로 복사할 수 있습니다. 또한, 원격 파일의 경우 자동으로 다운로드하여 복사하므로 'COPY' 명령어보다 더 편리합니다.

또한, 'ADD' 명령어는 압축 파일은 자동으로 압축 해제하여 복사합니다. 하지만 이 때, 파일 권한은 'COPY' 명령어와 다르게 압축 파일 안에 저장된 권한으로 설정됩니다. 따라서, 파일 권한을 유지하려면 'COPY' 명령어를 사용하는 것이 좋습니다.

이렇게 'COPY'와 'ADD' 명령어는 기본적으로 파일이나 폴더를 이미지 내부로 복사할 때 사용하는 명령어입니다. 그러나 'ADD' 명령어는 'COPY' 명령어보다 더 다양한 기능을 제공하며, 원격 파일 복사와 압축 해제 등의 편리한 기능을 제공합니다. 따라서, 이미지를 만들 때 목적에 따라 'COPY'와 'ADD' 명령어를 적절하게 선택하여 사용하는 것이 중요합니다.

반응형
Comments