반응형
1. 컨테이너와 호스트 간 파일 공유 방법
(1) docker cp 명령어
- 이미 실행 중이거나 종료된 컨테이너에서 한 번만 복사할 때 사용합니다.
- 컨테이너 → 호스트:예:
- docker cp myu:/home/ubuntu/test.txt /home/easyfly/
- docker cp <컨테이너이름>:<컨테이너경로> <호스트경로>
- 호스트 → 컨테이너:예:
- docker cp /home/easyfly/hello.txt myu:/home/ubuntu/
- docker cp <호스트경로> <컨테이너이름>:<컨테이너경로>
(2) 볼륨 마운트 (-v)
- 컨테이너 실행 시점에 호스트 디렉터리와 컨테이너 디렉터리를 연결합니다.
- 컨테이너 종료 후에도 파일이 호스트에 남습니다.
- 실행 예시:
- /home/easyfly/shared → 호스트 디렉터리
- /home/ubuntu/shared → 컨테이너 내부 디렉터리
- docker run -it --name myu -v /home/easyfly/shared:/home/ubuntu/shared my-ubuntu:0.1 /bin/bash
(3) Docker Volume
- 특정 호스트 경로가 아니라, Docker가 관리하는 전용 스토리지를 만듭니다.
- 여러 컨테이너에서 공유 가능.
- 예:이렇게 하면 myvol이라는 도커 볼륨이 /home/ubuntu/data와 연결됩니다.
- docker volume create myvol docker run -it --name myu -v myvol:/home/ubuntu/data my-ubuntu:0.1 /bin/bash
2. 가장 추천하는 방법
- 테스트나 단발성 복사 → docker cp
- 지속적으로 파일을 공유 → -v 옵션으로 호스트 디렉터리 마운트
3. 실습 권장 순서
- 컨테이너 안에서 /home/ubuntu/test.txt 같은 파일 하나 만듭니다.
- echo "hello from container" > /home/ubuntu/test.txt
- 호스트에서 복사:→ 복사된 파일 확인.
- docker cp myu:/home/ubuntu/test.txt /home/easyfly/ ls /home/easyfly/
- 반대로 호스트에서 hello.txt 파일을 만들어서 컨테이너로 넣어보세요:
- echo "hello from host" > /home/easyfly/hello.txt docker cp /home/easyfly/hello.txt myu:/home/ubuntu/
✅ 정리
- docker cp : 단발성 복사에 편리
- -v 볼륨 마운트 : 지속적이고 자동 동기화에 유리
'컴퓨터과학과' 카테고리의 다른 글
| 쿠버네티스 (1) | 2025.09.16 |
|---|---|
| 컨테이너와 호스트 관계 (3) | 2025.09.02 |
| Git, 최근 상태로 복구 (0) | 2025.08.31 |
| docker ps와 docker compose ps (4) | 2025.08.26 |
| Django + MySQL + Docker에서 첫 앱 만들기(완전 가이드) (4) | 2025.08.25 |
댓글