카테고리 없음
docker 볼륨마운트,바인드마운트
당근개발자
2022. 6. 1. 00:05
앞서서 볼륨이란! 스토리지의 한 영역을 분할한것을 말한다.
ssd를 분할한것이라고 생각하면 쉽다.
마운트란
-> 연결한다 라는 의미 그대로 대상을 연결해 운영체제 또는 소프트웨어의 관리하에 두는 일을 말한다.
마운트를 해야하는 이유??.
- 실제로 컨테이너를 사용하려면 스토리지 영역을 마운트해야한다. 왜냐하면 데이터가 이 스토리지에 있기 때문이다
- 컨테이너가 종료되거나 삭제된다면, 컨테이너 속의 데이터가 같이 소멸한다.
- 그렇기 때문에, 컨테이너의 데이터를 외부로 대피시켜야한다.
- 단, 컨테이너는 생성 및 폐기가 매우 빈번하기 때문에, 매번 데이터를 옮기는 대신 처음부터 컨테이너 외부에 둔 데이터에 접근해 사용하는것이 일반적이다. 이를 데이터 퍼시스턴시 라고 한다. 이 때 데이터를 두는 장소가 마운트된 스토리지 영역이다
스토리지 마운트의 종류
1) 볼륨마운트
- 볼륨 마운트는 도커 엔진이 관리하는 영역 내에 만들어진 볼륨을 컨테이너에 디스크 형태로 마운트한다.
- 이름만으로 관리가 가능하므로 다루기 쉽지만, 볼륨에 비해 직접 조작하기 어려우므로 임시 목적의 사용이나, 자주 쓰지는 않지만 지우면 안되는 파일을 두는 목적으로 사용한다.
2) 바인드 마운트
- 바인드 마운트는 도커가 설치된 컴퓨터의 문서폴더 또는 바탕화면 폴더 등 도커 엔진에서 관리하지 않는 영역의 기존 데릭터리를 컨테이너에 마운트하는 방식이다.
- 디렉터리가 아닌 파일단위로도 마운트가 가능하다
- 폴더 속에 파일을 직접 두거나 열어볼 수 있기때문에 자주 사용하는 파일을 두는데 사용한다.
3) 차이점
고려해야할 3가지
- 복잡성
- 호스트 컴퓨터에서 파일을 다룰 필요가 있는지
- 환경의 의존성을 배제해야 하는지
- 볼륨 마운트는 도커 엔진의 관리하에 있으므로, 사용자가 파일 위치를 신경 쓸 필요가 없다.
- 또한 운영체제에 따라 명령어가 달라지는, 의존성의 문제도 일어나지않는다. 예를 들어 윈도우와 mac Os ,리눅스의 경로를 기재하는 방식이 제가각 다르다. 따라서 리눅스 사용자가 만든 컨테이너를 윈도우 사용자가 사용하려면 기재된 경로를 수정해야한다.
- 그래서 만약 볼륨 마운트를 사용한다면 이러한 작업이 필요없다.
- 제일 중요한 포인트는, 도커 제작사에서도 볼륨마운트 사용을 권장한다.
항목 | 볼륨마운트 | 바인드마운트 |
스토리지 영역 | 볼륨 | 디렉터리 , 파일 |
물리적 위치 | 도커 엔진의 관리영역 | 어디든지 가능 |
마운트 절차 | 볼륨을 생성한 후 마운트 | 기존파일 또는 폴더를 마운트 |
내용 편집 | 도커 컨테이너늘 통해서 | 일반적인 파일과 같이 |
백업 | 절차가 복잡함 | 일반적인 파일과 같이 |
-> 볼륨 마운트해보기
항목 | 값 |
컨테이너이름 | apa000ex21 |
이미지이름 | nginx |
볼륨이름 | apa000vol1 |
포트번호 | 8081 |
볼륨 생성
docker volume create apa000vol1
볼륨 상세정보 확인
docker volume inspect apa000vol1
볼륨 삭제
docker volume rm apa000vol1
볼륨 마운트할 컨테이너 생성
docker run --name apa000ex21 -d -p 8081:80 -v apa000vol1:/usr/local/apache2/htdocs httpd