Docker Cp 사용법 완벽 가이드! 컨테이너와 호스트 파일 복사하기

Docker를 운영하다 보면 컨테이너 내부의 로그 파일을 가져오거나, 설정 파일을 컨테이너 안으로 복사해야 하는 상황이 자주 발생합니다. 또한 애플리케이션 설정 변경, 백업 파일 복원, 로그 분석 등 다양한 작업에서 컨테이너와 호스트 간 파일 전송이 필요합니다.

이럴 때 사용하는 명령어가 바로 docker cp입니다.

Docker Cp는 컨테이너와 호스트 시스템 사이에서 파일이나 디렉터리를 복사하는 명령어입니다. 별도의 네트워크 설정이나 공유 폴더를 구성하지 않아도 간단하게 파일을 주고받을 수 있어 운영 환경에서 매우 자주 사용됩니다.

이번 글에서는 Docker Cp의 개념부터 기본 사용법, 파일 복사 방법, 디렉터리 복사, 실무 활용 사례까지 자세히 알아보겠습니다.

Docker Cp란 무엇인가?

Docker Cp는 호스트와 컨테이너 사이에서 파일과 디렉터리를 복사하는 명령어입니다.

Linux의 cp 명령과 비슷한 형태로 사용할 수 있으며, 컨테이너 내부에 접속하지 않아도 파일을 손쉽게 주고받을 수 있습니다.

로그 수집, 설정 파일 수정, 백업 및 복원 작업에서 자주 활용됩니다.

Docker Cp는 언제 사용하는가?

다음과 같은 상황에서 많이 사용됩니다.

  • 로그 파일 복사
  • 설정 파일 업로드
  • 백업 파일 복원
  • 데이터 추출
  • 테스트 파일 전달
  • 운영 서버 유지보수

특히 장애 분석 시 로그 파일을 가져오는 작업에 많이 사용됩니다.

Docker Cp 기본 사용법

기본 문법은 다음과 같습니다.

docker cp <원본> <대상>

호스트와 컨테이너를 구분할 때는 컨테이너 이름 뒤에 :를 붙입니다.

컨테이너명:/경로

또는

/호스트/경로

형태로 사용합니다.

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

예를 들어 현재 디렉터리의 config.yml 파일을 컨테이너 안으로 복사하려면 다음과 같이 실행합니다.

docker cp config.yml web-server:/app/config.yml

파일이 지정한 위치로 복사됩니다.

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

컨테이너 내부의 로그 파일을 가져오는 예제입니다.

docker cp web-server:/var/log/app.log ./app.log

현재 디렉터리에 로그 파일이 저장됩니다.

디렉터리 복사

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

docker cp ./backup web-server:/app/

반대로 컨테이너 내부의 디렉터리를 가져오는 것도 가능합니다.

docker cp web-server:/app/logs ./logs

디렉터리 내부의 파일까지 모두 복사됩니다.

복사 결과 확인

복사가 완료되면 컨테이너 내부에서 확인할 수 있습니다.

docker exec web-server ls -al /app

또는 호스트에서는 다음 명령으로 확인합니다.

ls -al

복사한 파일이 정상적으로 생성되었는지 확인할 수 있습니다.

Docker Cp의 특징

Docker Cp는 다음과 같은 특징을 가지고 있습니다.

  • 실행 중인 컨테이너에서 사용할 수 있습니다.
  • 파일과 디렉터리를 모두 복사할 수 있습니다.
  • 권한 정보도 대부분 유지됩니다.
  • 네트워크 설정 없이 바로 사용할 수 있습니다.
  • 백업 및 로그 수집 작업에 매우 유용합니다.

Docker Cp 실무 활용 예제

Docker Cp는 운영 환경에서 로그 수집, 설정 파일 수정, 백업 복원 등 다양한 작업에 활용됩니다. 특히 Docker Exec으로 컨테이너에 직접 접속하지 않아도 파일을 손쉽게 주고받을 수 있어 유지보수 작업에서 매우 유용합니다.

로그 파일 가져오기

컨테이너 내부의 로그 파일을 호스트로 복사하는 예제입니다.

docker cp web-server:/var/log/nginx/access.log ./access.log

현재 디렉터리에 로그 파일이 저장됩니다.

로그 분석이나 장애 조사 시 가장 많이 사용하는 방법입니다.

설정 파일 업로드

호스트에서 수정한 설정 파일을 컨테이너 내부로 복사합니다.

docker cp nginx.conf nginx:/etc/nginx/nginx.conf

복사 후에는 서비스를 다시 시작하여 설정을 적용합니다.

docker restart nginx

백업 파일 복원

호스트에 저장된 백업 데이터를 컨테이너 내부로 복사합니다.

docker cp backup.sql mysql:/backup.sql

이후 데이터베이스 복원 작업을 진행할 수 있습니다.

컨테이너 내부 데이터 백업

컨테이너 안의 데이터를 호스트로 복사하는 예제입니다.

docker cp mysql:/var/lib/mysql ./mysql-backup

데이터를 안전하게 백업할 수 있습니다.

Linux 서버 문제 해결

운영 중인 웹 서버에서 오류가 발생했지만 로그가 컨테이너 내부에만 저장되고 있었습니다.

먼저 로그 파일을 호스트로 복사했습니다.

docker cp web-server:/var/log/app/error.log ./error.log

복사한 로그를 확인했습니다.

cat error.log

로그를 분석한 결과 설정 파일의 문법 오류가 원인이었습니다.

수정한 설정 파일을 다시 컨테이너로 복사했습니다.

docker cp config.yml web-server:/app/config.yml

설정을 적용하기 위해 컨테이너를 재시작했습니다.

docker restart web-server

서비스가 정상적으로 복구되었고 오류도 더 이상 발생하지 않았습니다.

Docker Cp 사용 시 주의사항

Docker Cp를 사용할 때는 다음 사항을 알아두는 것이 좋습니다.

첫 번째는 복사 대상 경로가 올바른지 반드시 확인해야 합니다.

잘못된 경로를 지정하면 파일이 원하는 위치에 복사되지 않을 수 있습니다.

두 번째는 컨테이너 내부의 중요 파일을 덮어쓰지 않도록 주의해야 합니다.

운영 환경에서는 백업을 먼저 수행하는 것이 안전합니다.

세 번째는 실행 중인 애플리케이션이 설정 파일을 사용하고 있다면 복사 후 재시작이 필요할 수 있습니다.

네 번째는 대용량 데이터를 자주 복사해야 하는 경우에는 Docker Volume을 사용하는 것이 더 효율적입니다.

Best Practice

Docker Cp를 사용할 때는 다음과 같은 방법을 추천합니다.

  • 로그 수집은 Docker Cp를 적극 활용합니다.
  • 설정 파일 변경 전에는 반드시 백업을 수행합니다.
  • 복사 후 파일 권한을 확인합니다.
  • 설정 변경 후에는 서비스를 재시작합니다.
  • 대용량 데이터는 Volume을 사용하는 것이 좋습니다.
  • 운영 서버에서는 복사 작업 전후로 서비스 상태를 점검합니다.

이러한 방법을 적용하면 파일 관리 작업을 더욱 안전하고 효율적으로 수행할 수 있습니다.

자주 묻는 질문

Docker Cp는 실행 중인 컨테이너에서만 사용할 수 있나요?

아닙니다.

실행 중인 컨테이너뿐 아니라 중지된 컨테이너에서도 파일을 복사할 수 있습니다.

디렉터리 전체도 복사할 수 있나요?

네.

파일뿐 아니라 디렉터리 전체도 한 번에 복사할 수 있습니다.

파일 권한도 함께 복사되나요?

대부분의 권한 정보는 유지되지만 환경에 따라 일부 차이가 발생할 수 있습니다.

복사 후 권한을 확인하는 것이 좋습니다.

Docker Volume과 Docker Cp의 차이는 무엇인가요?

Docker Cp는 일회성 파일 복사에 적합합니다.

Docker Volume은 지속적인 데이터 저장과 공유를 위해 사용하는 기능입니다.

마무리

Docker Cp는 컨테이너와 호스트 사이에서 파일과 디렉터리를 손쉽게 복사할 수 있는 매우 유용한 명령어입니다.

로그 분석, 설정 파일 수정, 데이터 백업과 복원 등 다양한 운영 작업에서 활용되며, Docker Exec 없이도 필요한 파일을 빠르게 주고받을 수 있다는 장점이 있습니다.

Docker Exec, Docker Volume, Docker Logs와 함께 활용하면 더욱 효율적인 Docker 운영 환경을 구축할 수 있습니다

댓글 남기기