Volume
도커 컨테이너에서 데이터를 저장하고 관리하는 데 사용되는 지속적인 저장소
- Volume이 필요한 이유? 컨테이너는 기본적으로 휘발성이기 때문에, 컨테이너가 종료되거나 삭제되면 내부의 파일 시스템 데이터도 사라짐, 볼륨은 컨테이너의 데이터를 영구적으로 유지하거나 컨테이너 간에 공유할 수 있도록 함
Volume의 종류
bind mount: 호스트 파일 시스템을 사용
- 호스트 파일 시스템의 특정 디렉터리를 컨테이너의 특정 디렉터리와 마운트
docker volume: 도커가 관리하는 볼륨
- 볼륨은 호스트 디렉터리의 /var/lib/docker/volumes/에 저장됨
- 볼륨과 컨테이너의 특정 디렉터리를 마운트하여 사용
tmpfs mount: 볼륨을 메모리에 저장하는 방식
- 컨테이너 종료 시 저장된 데이터가 사라짐

Bind mount
webroot 디렉터리 만들고, html 파일 생성하기
$ mkdir webroot
$ echo "my website" > ./webroot/index.html

컨테이너 실행 시 -v 옵션을 통해 bind mount하기
- -v <호스트 머신의 디렉토리> <컨테이너 내부의 매핑할 디렉터리>
$ docker run -v ./webroot:/usr/share/nginx/html -p 8080:80 -d nginx
localhost:8080 접속 결과

호스트의 디렉터리에 새로운 html 파일을 생성하면, 컨테이너에도 동일하게 적용됨
$ echo "change my website" > ./webroot/index.html

Volume mount
볼륨 생성하고, 생성된 볼륨 확인
$ docker volume create myswebsite-root
$ docker volume ls

컨테이너 실행 시 -v 옵션을 통해 volume mount하기
- -v <볼륨 이름> <컨테이너 내부의 매핑할 디렉터리>
$ docker run -v myswebsite-root:/usr/share/nginx/html -p 8080:80 -d nginx
실제로 볼륨이 호스트 머신의 어디에 저장되는지 확인
- Mountpoint: 볼륨이 저장되는 호스트 경로
$ docker volume inspect myswebsite-root

'DevOps > Docker' 카테고리의 다른 글
[Docker] Multi-stage build (0) | 2024.12.31 |
---|---|
[Docker] docker compose (0) | 2024.12.31 |
[Docker] Dockefile (0) | 2024.12.31 |
[Docker] 이미지 (0) | 2024.12.31 |
[Docker] Docker 설치 및 기본 명령어 (0) | 2024.12.31 |