반응형
Docker에서 호스트 컴퓨터의 파일을 Docker 컨테이너 내부로 복사하려면 다음 두 가지 방법을 사용할 수 있습니다.
1. docker cp
명령어 사용
docker cp
명령어를 사용하면 호스트의 파일을 실행 중인 컨테이너로 복사할 수 있습니다.
명령어 형식
docker cp <호스트 파일 경로> <컨테이너 이름 또는 ID>:<컨테이너 내 경로>
예제
- 호스트의 파일
/tmp/example.txt
를 컨테이너 내부/app
디렉토리로 복사: docker cp /tmp/example.txt my_container:/app
- 호스트의 디렉토리
/data
를 컨테이너 내부/backup
으로 복사: docker cp /data my_container:/backup
2. docker run
또는 docker create
시 볼륨 마운트
컨테이너 생성 시 호스트의 파일 또는 디렉토리를 볼륨으로 마운트하여 컨테이너 내부에서 접근할 수 있습니다.
명령어 형식
docker run -v <호스트 경로>:<컨테이너 경로> <이미지>
예제
- 호스트의
/tmp/data
디렉토리를 컨테이너 내부/app/data
에 마운트: docker run -v /tmp/data:/app/data my_image
-v
로 마운트된 파일은 실시간으로 동기화되므로, 컨테이너 내에서 파일을 수정하면 호스트에도 영향을 미칩니다.
3. Dockerfile을 활용한 빌드
컨테이너를 빌드하면서 특정 파일을 복사하도록 Dockerfile에 지시할 수도 있습니다.
예제 Dockerfile
FROM ubuntu:20.04
WORKDIR /app
COPY ./example.txt /app/example.txt
사용 방법
Dockerfile
과example.txt
가 동일한 디렉토리에 있다면, 다음 명령어를 실행하여 이미지를 빌드:docker build -t my_image .
- 해당 이미지를 기반으로 컨테이너를 생성하면
/app/example.txt
에 파일이 포함됩니다.
4. docker exec
를 이용한 직접 복사
호스트에서 실행 중인 컨테이너에 파일을 복사하기 어려운 경우, docker exec
로 컨테이너 내부에서 네트워크 명령이나 wget
, curl
을 활용해 파일을 다운로드할 수도 있습니다.
예제
- 컨테이너 내부에 접속하여 파일 다운로드:
docker exec -it my_container bash wget http://example.com/example.txt -O /app/example.txt
요약
- 빠르고 간단한 복사:
docker cp
- 실시간 동기화:
docker run -v
로 볼륨 마운트 - 이미지에 포함:
Dockerfile
의COPY
지시어 - 특수한 상황: 컨테이너 내부에서
wget
이나curl
사용
필요에 따라 위 방법 중 적합한 것을 선택하여 사용하세요!
반응형
'가상 머신 > Docker' 카테고리의 다른 글
[ Docker ] Docker-Compose 설치하기 (0) | 2022.07.28 |
---|---|
[ Docker ] Dockerfile 작성하기 (0) | 2022.07.28 |
[ Docker ] usermod - 사용자에게 docker group 설정하기 (0) | 2022.07.27 |
[ Docker ] Docker 사용하기 (0) | 2018.06.16 |
[ Docker ] Docker 설치 하기 (windows, mac, ubuntu) (0) | 2018.06.03 |