728x90
개요
Docker를 사용하다 보면 로컬 시스템과 컨테이너 간에 파일을 주고받아야 하는 상황 이 발생합니다.
Docker는 이를 위해 docker cp 명령어를 제공하는데, 이 명령어를 통해 로컬 시스템과 컨테이너 간에 파일이나 디렉토리를 손쉽게 복사할 수 있습니다.
docker cp 명령어란❓
docker cp 명령어는 로컬 시스템과 Docker 컨테이너 간에 파일이나 디렉토리를 복사할 때 사용하는 명령어입니다.
사용법
# 로컬 -> 컨테이너로 복사
docker cp 로컬경로 컨테이너이름:컨테이너내부경로
# 컨테이너 -> 로컬로 복사
docker cp 컨테이너이름:컨테이너내부경로 로컬경로
1. 복사
- 1. 먼저 로컬 시스템에 dummy -> test.txt 파일을 생성합니다.
- 2. docker ps로 현재 실행중인 컨테이너의 ID(boring_vaughan)에 로컬의 dummy 폴더 자체를 복사해보겠습니다.
- 3. 복사하려는 폴더나 파일 지정 :
- 로컬의 dummy 폴더 전체를 복사하기 위해 "/" 를 경로 끝에 붙입니다.
- 컨테이너 ID 뒤에 ":" 콜론을 붙이고 컨테이너 내부의 목적지 경로("test")를 지정합니다.
지정한 경로가 컨테이너내부에 존재하지 않는 경우, 자동으로 새로 생성됩니다.
2. 복사 확인
- 1. 복사가 정상적으로 되었는 지 확인해보기 위해 로컬 시스템의 "test.txt"파일을 삭제해보겠습니다.
docker cp boring_vaughan:/test dummy
- 2. 위 명령어를 실행하면 컨테이너의 test 폴더 전체가 로컬 시스템의 dummy 폴더로 복사됩니다.
docker cp boring_vaughan:/test/test.txt dummy
구체적으로 대상을 지정하고 싶다면 위와 같이 지정 또한 가능합니다.
실제 활용 사례
- 로그 파일 추출
- 컨테이너 내부의 로그 파일을 로컬로 복사하여 분석
- 설정 파일 주입
- 로컬에서 수정한 설정 파일을 컨테이너에 적용
- 개발 중 파일 테스트
- 개발 중인 파일을 컨테이너에 복사하여 테스트
주의 사항 : 코드 변경 시 고려할 점 ❗️
소스 코드를 수정했을 때는 일반적으로 이미지를 다시 빌드하고 컨테이너를 재시작하는 것이 올바른 방법입니다.
물론 docker cp 명령어를 사용해 변경된 코드를 직접 컨테이너에 복사할 수도 있습니다. 하지만 이 방법은 권장되지 않습니다. 어떤 파일들이 변경되었는지 추적하기 어렵고, 예기치 않은 문제가 발생할 수 있기 때문입니다.
따라서 docker cp 명령어는 일회성 작업(테스트, 디버깅)에서만 사용하고, 코드나 설정 파일 변경 시 이미지를 다시 빌드하는 방식이 권장됩니다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] 컨테이너의 파일시스템 이해하기: 데이터는 어디에 저장될까❓ (0) | 2025.01.05 |
---|---|
[Docker] Docker에서 컨테이너와 이미지 식별을 위한 이름 및 태그 활용 알아보기 (0) | 2024.12.30 |
[Docker] Docker 컨테이너의 실행 모드: Attach vs Detach (0) | 2024.12.26 |
[Dokcer] 도커 레이어 시스템 이해하기: 이미지와 컨테이너의 구성 원리 (0) | 2024.12.17 |
[Docker] EXPOSE 명령어와 docker run -p 옵션의 차이점 알아보기 (0) | 2024.12.01 |