Dockerfile의 'COPY'와 'ADD' 명령 간의 차이점 이해

Dockerfile의 'COPY'와 'ADD' 명령 간의 차이점 이해
Dockerfile의 'COPY'와 'ADD' 명령 간의 차이점 이해

Dockerfile 명령 설명

Dockerfile의 'COPY' 및 'ADD' 명령은 컨테이너의 파일 시스템에 파일을 가져오는 역할을 하지만 고유한 기능과 최적의 사용 시나리오가 함께 제공됩니다. Dockerfile을 효율적으로 관리하고 컨테이너화된 애플리케이션이 예상대로 작동하도록 하려면 이러한 차이점을 이해하는 것이 필수적입니다.

'COPY'는 주로 간단한 파일 복사에 사용되는 반면, 'ADD'는 원격 URL 처리 및 압축 파일 추출과 같은 추가 기능을 제공합니다. 이 기사에서는 각 명령의 미묘한 차이를 살펴보고 Docker 빌드를 최적화하기 위해 언제 다른 명령을 사용해야 하는지 안내합니다.

명령 설명
FROM 빌드 중인 Docker 이미지에 사용할 기본 이미지를 지정합니다.
WORKDIR 컨테이너 내부의 작업 디렉터리를 설정합니다.
COPY 호스트의 파일이나 디렉터리를 컨테이너의 파일 시스템으로 복사합니다.
ADD 컨테이너의 파일 시스템에 파일, 디렉터리 또는 원격 URL을 추가하고 파일 추출을 처리할 수 있습니다.
RUN 컨테이너 환경에서 명령을 실행합니다.
EXPOSE 컨테이너가 런타임 시 지정된 네트워크 포트에서 수신 대기함을 Docker에 알립니다.

Dockerfile 명령에 대한 자세한 설명

첫 번째 스크립트는 COPY Dockerfile의 명령입니다. 그만큼 COPY 명령은 간단하며 호스트 시스템의 파일이나 디렉터리를 Docker 컨테이너의 파일 시스템으로 복사하는 데 사용됩니다. 이 예에서 스크립트는 FROM 기본 이미지를 다음과 같이 지정하는 명령 . 그만큼 WORKDIR 명령은 컨테이너 내부의 작업 디렉터리를 다음으로 설정합니다. /app . 다음은 COPY 호스트의 현재 디렉터리 내용을 다음 디렉터리에 복사하는 명령입니다. /app 컨테이너의 디렉터리입니다. 파일을 복사한 후, RUN 명령은 다음에 지정된 필수 Python 패키지를 설치하는 데 사용됩니다. requirements.txt 파일. 마지막으로, EXPOSE 명령을 사용하면 포트 80을 외부에서 사용할 수 있습니다.

대조적으로, 두 번째 스크립트는 ADD Dockerfile의 명령입니다. 첫 번째 스크립트와 유사하게 다음으로 시작합니다. FROM 기본 이미지를 설정하는 명령 WORKDIR 작업 디렉터리를 정의하는 명령입니다. 여기서 중요한 차이점은 ADD 원격 URL에서 파일을 추가하는 데 사용되는 명령입니다. 이 경우에는 https://example.com/data/archive.tar.gz . 그만큼 ADD 명령은 파일을 복사할 뿐만 아니라 후속 명령에서 볼 수 있듯이 압축된 파일을 자동으로 추출하는 기능도 있습니다. RUN 추출하는 명령 archive.tar.gz 에 파일을 /app 예배 규칙서. 이에 따라, RUN 명령은 필수 Python 패키지를 설치하고 EXPOSE 명령을 사용하면 포트 80을 사용할 수 있습니다.

Dockerfile에서 COPY 사용

Dockerfile 예

# Use an official Python runtime as a parent image
FROM python:3.8-slim-buster

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

Dockerfile에서 ADD 사용

Dockerfile 예

# Use an official Python runtime as a parent image
FROM python:3.8-slim-buster

# Set the working directory in the container
WORKDIR /app

# Add files from a remote URL
ADD https://example.com/data/archive.tar.gz /app/

# Extract the archive file
RUN tar -xzf /app/archive.tar.gz -C /app

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

Dockerfile의 COPY 및 ADD에 대한 심층 분석

둘 다 동안 COPY 그리고 ADD 명령은 호스트 시스템에서 컨테이너의 파일 시스템으로 파일을 복사하는 목적으로 사용되며 각각을 다양한 시나리오에 적합하게 만드는 고유한 기능과 사용 사례를 가지고 있습니다. 그만큼 COPY 명령은 더 간단하고 예측 가능합니다. 아카이브 추출이나 원격 파일 가져오기 등 추가 처리가 필요하지 않은 기본 파일 복사에 가장 적합합니다. 이 명령은 로컬 파일과 디렉터리만 컨테이너에 복사되도록 하여 깨끗하고 안전한 빌드 환경을 유지합니다.

반면, ADD 명령은 더 많은 기능을 제공하지만 복잡성과 잠재적인 보안 위험이 추가됩니다. 그만큼 ADD 명령은 URL 다운로드를 처리하고 다음과 같은 압축 파일을 자동으로 추출할 수 있습니다. .tar, .gzip, 그리고 .bzip2. 이는 빌드 프로세스에 이미지 생성 중에 추출해야 하는 원격 자산 또는 아카이브가 필요한 경우에 유용할 수 있습니다. 그러나 이러한 추가 기능에는 원격 위치에서 다운로드할 때 의도하지 않은 파일 덮어쓰기 및 보안 취약성과 같은 위험이 따릅니다. 따라서 다음 중 하나를 결정할 때 이러한 요소를 신중하게 고려하는 것이 중요합니다. COPY 그리고 ADD.

Dockerfile의 COPY 및 ADD에 대한 일반적인 질문과 답변

  1. 의 주요 용도는 무엇입니까? COPY Dockerfile의 명령?
  2. 그만큼 COPY 명령은 주로 호스트 시스템의 로컬 파일과 디렉터리를 Docker 컨테이너로 복사하는 데 사용됩니다.
  3. 언제 사용해야합니까? ADD 대신 명령 COPY?
  4. 당신은 ADD URL에서 파일을 복사해야 하거나 빌드 프로세스 중에 압축 파일을 추출해야 할 때 명령을 사용합니다.
  5. 보안에 미치는 영향은 무엇입니까? ADD 명령?
  6. 그만큼 ADD 명령은 잠재적으로 기존 파일을 덮어쓰거나 취약점을 일으킬 수 있으므로 특히 원격 URL에서 파일을 다운로드할 때 보안 위험을 초래할 수 있습니다.
  7. COPY 명령으로 압축 파일을 추출하시겠습니까?
  8. 아니, COPY 명령에는 압축 파일을 추출하는 기능이 없습니다. 단순히 있는 그대로 복사합니다.
  9. 어떻게 ADD 압축 파일을 다른 방식으로 처리 COPY?
  10. 그만큼 ADD 명령은 다음과 같은 압축 파일을 자동으로 추출합니다. .tar, .gzip, 그리고 .bzip2 컨테이너에 추가될 때.
  11. 와일드카드를 사용할 수 있습니까? COPY 명령?
  12. 예, 다음과 함께 와일드카드를 사용할 수 있습니다. COPY 패턴과 일치하는 여러 파일이나 디렉터리를 복사하는 명령입니다.
  13. URL이 ADD 명령에 도달할 수 없습니까?
  14. URL이 제공된 경우 ADD 명령에 연결할 수 없으면 Docker 빌드 프로세스가 실패합니다.
  15. 간단한 로컬 파일 복사 작업에는 어떤 명령을 사용해야 합니까?
  16. 간단한 로컬 파일 복사 작업의 경우 다음을 사용해야 합니다. COPY 명령이 더 간단하고 안전하기 때문입니다.
  17. ADD 로컬 및 원격 소스 모두에서 파일을 추가하는 데 명령을 사용합니까?
  18. 예, ADD 명령은 로컬 소스와 원격 URL 모두에서 파일을 추가할 수 있으므로 특정 시나리오에서 더욱 다양하게 사용할 수 있습니다.

Docker COPY 및 ADD 명령 마무리

언제 사용해야 하는지 이해하기 COPY 그리고 ADD Dockerfile의 파일은 컨테이너 빌드를 최적화하는 데 필수적입니다. 하는 동안 COPY 로컬 파일에 대해 간단하고 안전합니다. ADD 복잡성이 증가하고 보안 문제가 발생할 수 있으므로 추가 기능을 제공합니다. 특정 요구 사항에 따라 올바른 명령을 선택하면 Docker 이미지의 효율성과 보안이 향상될 수 있습니다.