본문 바로가기

About/Docker

[Docker] Dockerfile의 COPY와 ADD 명령어 비교: 언제 어떤 명령어를 사용해야 할까?

Docker 이미지를 구축할 때 Dockerfile의 COPYADD 명령어는 파일과 디렉토리를 이미지로 복사하는 데 사용됩니다. 이 글에서는 이 두 명령어의 차이점과 각각의 사용 사례를 살펴보겠습니다.

>공식문서

COPY 명령어

COPY 명령어는 Docker 호스트의 파일이나 디렉토리를 Docker 이미지로 복사하는 데 사용됩니다. 이 명령어는 로컬 파일 시스템에서만 작동하며, URL이나 다른 원격 소스에서 직접 파일을 복사할 수는 없습니다.

COPY 사용 예시

# Dockerfile
COPY ./local_directory /container_directory

이 예시에서 local_directory는 호스트 시스템의 디렉토리이며, /container_directory는 대상 이미지 내의 디렉토리입니다.

ADD 명령어

ADD 명령어는 COPY와 유사하게 작동하지만 몇 가지 추가 기능을 제공합니다. 이 명령어는 URL을 통해 파일을 다운로드할 수 있으며, 압축된 파일을 자동으로 추출할 수 있는 기능을 갖고 있습니다.

ADD 사용 예시

# Dockerfile
ADD http://example.com/big.tar.xz /container_directory

이 예시에서는 big.tar.xz 파일을 http://example.com에서 다운로드하고, /container_directory에 압축 해제하여 추가합니다.

차이점

  • 단순성 vs. 다기능성: COPY는 단순하고 명확한 기능을 가진 반면, ADD는 더 다양한 기능을 제공합니다.
  • 원격 소스 처리: COPY는 로컬 파일에만 사용할 수 있지만, ADD는 원격 URL에서 파일을 다운로드할 수 있습니다.
  • 자동 압축 해제: ADD는 압축된 파일을 이미지 내부에서 자동으로 압축 해제할 수 있지만, COPY는 그렇지 않습니다.

언제 어떤 명령어를 사용해야 할까요?

일반적으로 Dockerfile을 작성할 때 명료성과 예측 가능성을 위해 COPY를 사용하는 것이 권장됩니다. ADD는 특정 상황에서 유용할 수 있지만, 그 추가 기능들이 필요하지 않다면 COPY를 사용하는 것이 더 간결하고 이해하기 쉽습니다.

이해를 돕기 위해 Docker 공식 문서나 관련 기술 블로그에서 더 자세한 예시와 설명을 찾아볼 수 있습니다. Dockerfile을 작성하고 관리하는 과정에서 이러한 명령어들의 올바른 사용법을 익히는 것은 효율적인 이미지 구축에 매우 중요합니다.


이 글이 Docker 이미지 구축 과정에서 COPYADD 명령어의 차이점을 이해하는 데 도움이 되었기를 바랍니다.