목표!
컨테이너와 호스트(도커 엔진 실행 pc) 사이 파일 복사하는 방법 배우기
볼륨마운트에 대해 배우기
-파일복사-
파일 복사는 컨테이너 -> 호스트, 호스트 -> 컨테이너 양방향 가능
1) 명렁어 cp로 호스트에게 파일 복사
1. 아파치 서버 만들기
2. html 파일을 복사
명렁어 - docker cp 호스트 컨테이너
성공!
2) 명령어 cp로 컨테이너에서 호스트로
1. 테스트를 위해 삭제
2.cp 명령어
명렁어 - docker cp 컨테이너 호스트
3. 확인
-볼륨마운트-
외부 저장소를 가져 오는 느낌!
볼륨을 마운트하면 컨테이너 일부를 호스트 컴퓨터의 일부처럼 다룰 수 있어 편하다.
볼륨 마운트(Volume Mount)**는 컨테이너 안의 데이터를 호스트(컴퓨터)와 공유하거나, 유지하기 위해 사용하는 기능
컨테이너 안의 특정 폴더를 밖으로 연결
(이미지나 컨테이너는 생성하고 삭제의 경우가 빈번해서 데이터 유지를 위해)
왜 쓰냐면?
- 컨테이너는 삭제되면 데이터도 사라지는데, 볼륨을 쓰면 데이터는 남아 있음
- 호스트에 있는 파일을 컨테이너가 접근하거나 수정가능
- 여러 컨테이너가 같은 데이터를 공유
마운트 종류
바인드 마운트 (Bind Mount)
- 내가 지정한 경로를 그대로 컨테이너에 연결하는 방식
- 도커 엔진이 관리하지 않고, 호스트 컴퓨터의 자료
볼륨 마운트 (Volume Mount)
- 도커가 자동으로 관리해주는 저장 공간
- 따로 경로 지정 안 해도 되고, 도커가 알아서 내부에 저장소 만들줌
바인드 마운트는: 개발할 때 유용함 (호스트 디렉토리 직접 연결)
볼륨 마운트는: 운영/배포할 때 유용함 (도커가 알아서 관리)
바인드 마운트 (Bind Mount) | 볼륨 마운트 (Volume Mount) | |
생성 방식 | 호스트의 경로를 직접 지정 | 도커가 자동으로 관리하는 볼륨 생성 |
물리적 위치 | 어디든 가능 | 도커 엔진의 관리 영역 |
사용 용도 | 개발 환경 (코드 실시간 반영 필요할 때) | 운영 환경 (데이터 유지, 백업 필요할 때) |
내용 편집 | 일반적 파일과 같음 | 높음 (도커가 경로 관리) |
백업 및 복원 | 일반적 파일과 같음 | 절차가 복잡 |
마운트 절차 | 기존 파일 또는 폴더로 마운트 | 볼륨을 생성 후 마운트 |
권한/보안 | 호스트 권한 영향 받음 | 상대적으로 격리되어 있어 보안에 유리함 |
마운트 방식
run 커맨드 옵션형태로 지정
마운트하려는 스토리지의 경로가 컨테이너 속 특정 경로와 연결되도록 설정하는 것
ex) 바탕화면의 단축아이콘처럼 다른 곳에 있지만, 단축 아이콘을 사용해 그곳에 있는 것 처럼 사용 가능
스토리지를 마운트하는 절차
먼저 마운트될 스토리지 생성 후 마운트
(마운트 동시에 볼륨을 만들 수도 있지만, 따로 하는 것을 권장!)
#바인드 마운트의 커맨드
docker run -v 스토리지_실제_경로:컨테이너_마운트_경로
#볼륨 마운트의 커맨드
docker run -v 컨테이너_마운트_경로
실습 - 바인드 마운트 해보기
apa_folder 라는 기본 폴더 생성 후
docker -v 실제 경로 : 컨테이너 마운트 경로
결과
폴더가 마운트돼서 index of/로 나옴 (아무 것도 넣지 않고 폴더만 넣은 상태)
apa_folder에 index.html을 넣을 시
index.html이 출력
실습 - 볼륨 마운트 해보기
1. 마운트할 볼륨 생성
docker volume create
볼륨이 생성될 위치는 도커 엔진이 관리하기 때문에 신경 쓰지 않아도 됨!
2. run 커맨드로 아파치 컨테이너 실행
-v 옵션으로 조금 전에 생성한 볼륨과 컨테이너 속 마운트 위치를 정함
3. volume inspect
volume inspect 명령어로 볼륨의 상세 정보를 확인
4. container inspect
마운트 정보를 알 수 있다.
volume rm 으로 볼륨도 삭제 가능
'docker' 카테고리의 다른 글
docker 컴포즈 (0) | 2025.04.21 |
---|---|
docker4) 컨테이너로 이미지 만들기 (0) | 2025.04.16 |