어제 오늘 내일

[docker] 컨테이너 간 데이터 복사 (docker cp) 본문

IT/Docker

[docker] 컨테이너 간 데이터 복사 (docker cp)

hi.anna 2025. 10. 16. 01:45

1. docker cp 개요

docker cp 명령어는 호스트와 컨테이너 간에 파일이나 디렉토리를 복사하는 기능을 제공합니다.
하지만 컨테이너와 컨테이너 간에는 직접 복사가 불가능하므로, 호스트를 거쳐야 합니다.

즉, 컨테이너 → 호스트 → 다른 컨테이너 순서로 복사해야 합니다.

 

2. 기본 사용법

# 컨테이너에서 호스트로 복사
docker cp <컨테이너ID 또는 이름>:<경로> <호스트 경로>

# 호스트에서 컨테이너로 복사
docker cp <호스트 경로> <컨테이너ID 또는 이름>:<경로>

 

3. 컨테이너 → 컨테이너 복사 절차

1단계: 첫 번째 컨테이너에서 파일 꺼내오기

docker cp container1:/app/data.txt /tmp/data.txt

container1 내부의 /app/data.txt를 호스트의 /tmp/data.txt로 복사

2단계: 다른 컨테이너로 복사하기

docker cp /tmp/data.txt container2:/usr/share/data.txt

→ 호스트에 있는 /tmp/data.txtcontainer2 내부의 /usr/share/data.txt로 복사

이렇게 하면 결과적으로 container1container2로 파일을 옮길 수 있습니다.

 

4. 디렉토리 복사

디렉토리 전체를 복사할 수도 있습니다.

예:

# container1의 /var/log 디렉토리를 호스트로 복사
docker cp container1:/var/log ./logs

# 호스트에서 container2로 디렉토리 복사
docker cp ./logs container2:/opt/logs

 

5. 실습 예제

# 컨테이너 1에서 파일 생성
docker exec container1 sh -c "echo 'Hello from container1' > /app/hello.txt"

# 컨테이너1 → 호스트로 복사
docker cp container1:/app/hello.txt .

# 호스트에서 컨테이너2로 복사
docker cp hello.txt container2:/app/hello.txt

# 컨테이너2에서 확인
docker exec container2 cat /app/hello.txt

실행 결과:

Hello from container1

→ 성공적으로 컨테이너 간 파일이 복사되었습니다.

 

6. 정리

  • docker cp호스트와 컨테이너 간 복사만 지원
  • 컨테이너 간 복사는 직접 지원하지 않으므로 호스트를 경유해야 함
  • 파일뿐만 아니라 디렉토리도 복사 가능
  • 데이터 공유가 자주 필요하다면 볼륨(volume) 공유를 사용하는 것이 더 효율적임

 

 

반응형
Comments