Docker 와 호스트 간 파일 복사 방법

DockerBeginner
지금 연습하기

소개

이 포괄적인 튜토리얼은 Docker 기반 인프라 내 파일 전송을 위한 강력한 도구인 "docker cp" 명령어에 대해 자세히 설명합니다. 호스트 시스템과 Docker 컨테이너 간, 그리고 컨테이너들 간의 파일 및 디렉토리 복사 방법을 배우면서 컨테이너화된 애플리케이션의 배포, 관리 및 협업을 향상시키세요.

Docker CP 명령어 기본

Docker CP 명령어 소개

docker cp 명령어는 Docker 컨테이너와 호스트 시스템 간 파일 전송을 관리하는 강력한 유틸리티입니다. 파일 및 디렉토리를 효율적으로 복사하여 컨테이너 파일 관리를 용이하게 합니다.

기본 구문 및 사용법

docker cp 명령어의 기본 구문은 다음과 같습니다.

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

명령어 매개변수

매개변수 설명 예시
CONTAINER 컨테이너 이름 또는 ID my_container
SRC_PATH 원본 파일 또는 디렉토리 경로 /app/data.txt
DEST_PATH 대상 파일 또는 디렉토리 경로 /home/user/

실제 예제

컨테이너에서 호스트로 파일 복사

## 컨테이너에서 호스트로 단일 파일 복사
docker cp my_container:/app/config.json ./local_config.json

## 컨테이너에서 호스트로 전체 디렉토리 복사
docker cp my_container:/var/log/ ./container_logs/

호스트에서 컨테이너로 파일 복사

## 컨테이너로 단일 파일 복사
docker cp ./application.conf my_container:/etc/app/

## 컨테이너로 여러 파일 복사
docker cp ./scripts/ my_container:/opt/project/

워크플로 시각화

graph LR
    A[호스트 시스템] -->|docker cp| B[Docker 컨테이너]
    B -->|docker cp| A

워크플로는 호스트 시스템과 Docker 컨테이너 간 양방향 파일 전송 기능을 보여주며, 컨테이너 파일 관리에서 docker cp 명령어의 다양성을 보여줍니다.

파일 전송 기법

고급 파일 복사 전략

Docker 는 호스트 시스템과 컨테이너 간 파일 전송을 위한 다양한 기법을 제공하여 유연하고 효율적인 파일 관리 작업을 가능하게 합니다.

재귀적 파일 복사

재귀적 복사는 단일 명령어로 전체 디렉토리 구조를 전송할 수 있습니다.

## 전체 디렉토리를 재귀적으로 복사
docker cp -r ./local_directory my_container:/remote_path/

## 디렉토리 내용을 권한을 유지하여 복사
docker cp -a ./source_dir/ my_container:/destination/

파일 전송 옵션

옵션 설명 사용 시나리오
-r 재귀적 복사 디렉토리 복사
-a 아카이브 모드 파일 속성 유지
-L 심볼릭 링크 따라가기 링크된 파일 처리

복잡한 파일 작업

선택적 파일 복사

## 특정 파일 유형 복사
docker cp ./logs/*.log my_container:/var/log/

## 패턴 일치하는 파일 복사
docker cp ./data/report_[0-9]*.txt my_container:/reports/

전송 워크플로 시각화

graph TD
    A[호스트 파일] -->|재귀적 복사| B[컨테이너 대상]
    B -->|선택적 전송| A

성능 고려 사항

Docker 의 파일 전송 기법은 컨테이너 상태, 파일 크기 및 네트워크 구성에 따라 달라집니다. 대용량 파일 전송 시 효율적인 컨테이너 파일 작업을 위해 추가적인 최적화 전략이 필요할 수 있습니다.

고급 Docker CP 워크플로우

컨테이너 간 파일 공유 기법

고급 Docker CP 워크플로우는 여러 컨테이너와 환경 간 정교한 데이터 관리 및 파일 전송 전략을 가능하게 합니다.

다중 컨테이너 파일 전송

## 실행 중인 컨테이너 간 파일 전송
docker cp source_container:/path/file.txt destination_container:/remote/path/

## 중간 호스트 시스템을 통해 파일 복사
docker cp source_container:/app/data.zip ./temp/
docker cp ./temp/data.zip target_container:/destination/

워크플로우 복잡도 매트릭스

워크플로우 유형 원본 대상 복잡도
직접 전송 컨테이너 컨테이너 낮음
호스트 중간 단계 컨테이너 호스트 → 컨테이너 중간
복잡한 라우팅 여러 컨테이너 특정 경로 높음

스크립트화된 파일 관리

#!/bin/bash
## 고급 파일 동기화 스크립트

CONTAINERS=$(docker ps -q)
for container in $CONTAINERS; do
  docker cp /backup/config.json $container:/etc/app/config.json
done

전송 워크플로우 시각화

graph TD
    A[원본 컨테이너] -->|파일 복사| B[대상 컨테이너]
    B -->|중간 호스트| C[대상 환경]

성능 최적화 전략

중간 단계를 최소화하고 압축된 아카이브를 사용하며 Docker 볼륨을 사용하여 지속적인 데이터 관리를 통해 효율적인 파일 전송 기법을 구현합니다.

요약

"docker cp" 명령어는 Docker 의 다용도 기능으로 호스트 시스템과 Docker 컨테이너 간, 그리고 컨테이너들 간에 파일 및 디렉토리를 쉽게 복사할 수 있도록 지원합니다. "docker cp" 명령어의 구문, 옵션 및 최선의 사용 방법을 숙달함으로써 컨테이너화된 애플리케이션 워크플로우를 간소화하고, 데이터 관리를 개선하며, Docker 기반 인프라의 전반적인 효율성을 높일 수 있습니다.