![[Docker/기초] Volume](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEDpck%2FbtsEVhuFz16%2F0JSgqBHMFIhJKkCkviQyaK%2Fimg.png)

Volume 즉 볼륨이라는 것은 스토리지의 한 영역을 분할 하는 것을 말한다.
Docker에서는 컨테이너에서 지워지면 안되는 것들 (ex. DB에 저장된 내용들)을 컨테이너가 아닌 외부에 저장해서 컨테이너가 업데이트 등을 위해서 지워져도 데이터는 지워지지 않도록 하는 기능이다.
Mount?
연결하다라는 의미 그대로 Volume을 컨테이너에 연결하는 과정을 말한다.
그리고 이렇게 Volume을 둬서 데이터를 컨테이너 밖에서 안전하게 보관하는 것이 Data Persistency(데이터 지속성)라고 한다.


Volume Mount Vs Bind Mount
마운트의 종류는 크게 2가지가 있다.(메모리 마운트인 tmpfs가 있지만 다루지 않겠다.)
항목 | Volume Mount | Bind Mount |
스토리지 영역 | 도커 엔진 위에 볼륨 | 호스트의 디렉토리 또는 파일 |
물리적 위치 | 도커 엔진 관리 영역 | 어디든지 가능 |
마운트 절차 | 볼륨을 생성한 후 마운트 | 기존 파일 혹은 폴더를 마운트 |
내용 편집 | 도커 컨테이너를 통해서 | 일반적인 파일과 같음 |
백업 | 까다로움 | 일반적인 파일과 같음 |

Volume Mount의 장점
- 도커 엔진 위에서 작동하기 때문에 데이터의 위치를 신경쓰지 않아도 된다.
- 사용하는 유저의 환경에 영향을 받지 않는다.(운영체제 마다 경로 지정이 다른 것)
Volume Mount의 단점
- 도커 엔진에 접근하지 어렵다.
- 억지로 볼륨을 수정하려고 하면 볼륨이 깨질 수도 있다.
- 백업이 어렵다.
Bind Mount의 장점
- 영역 어디라도 파일을 둘 수 있다.
- 데이터를 다른 방식으로 CRUD할 수 있다.
Bind Mount의 단점
- 운영체제에 의존성이 있다.
- 호스트가 직접 데이터를 관리햐야 한다(저장 위치 등등).
Mount 하는 방법
아파치 이미지를 통해서 컨테이너를 만드는 법을 알려주겠다.
Volume Mount
1. 마운트할 볼륨을 만든다. Volume_volume이라는 이름의 볼륨을 만들겠다.
docker volume create Volume_volume
2. 컨테이너를 실행시키며 만들었던 볼륨에 연결한다.
docker run --name volume_con -d -p 8080:80 -v Volume_volume:/usr/local/apache2/htdocs httpd
docker run --name {컨테이너이름} -d -p {포트번호} -v {만들은 볼륨 이름}:{컨테이너안의 데이터 저장 위치} {이미지 이름}
Bind Mount
1. 마운트할 디렉토리을 만든다. Bind_dir이라는 이름의 디렉토리을 만들겠다.(경로설정은 윈도우 기준이다.)
C드라이브의 document안에 있다.
2. 컨테이너를 실행시키며 만들었던 디렉토리에에 연결한다.(내가 만든 디렉토리 경로는 운영체제에 따라 다르다.)
docker run --name volume_con -d -p 8080:80 -v C:\Users\당신의 사용자명\Documents\Bind_dir:/usr/local/apache2/htdocs httpd
docker run --name {컨테이너이름} -d -p {포트번호} -v {만든 디렉토리 경로}:{컨테이너안의 데이터 저장 위치} {이미지 이름}
'Deployment > Docker 기초' 카테고리의 다른 글
[Docker/기초] Docker-comopse 파일 만들기 (version 3) (2) (0) | 2024.12.05 |
---|---|
[Docker/기초] Docker File 만들기 (1) (0) | 2024.12.05 |
[Docker/기초] Docker 상위 커맨드 ls 정리 (0) | 2024.02.14 |
[Docker/기초] Docker 커맨드, 옵션 정리 (0) | 2024.02.14 |
[Docker/기초] Docker란? (0) | 2024.02.13 |
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간