![[Docker] 볼륨 (Volume)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYqkED%2FbtsNWsuFG3F%2FGyYQV0HCxdarOjvIpWRSWk%2Fimg.webp)
[Docker] 볼륨 (Volume)DevOps/Docker2025. 5. 14. 15:42
Table of Contents
이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.
도커 볼륨의 개념
- 기존 컨테이너를 새로운 컨테이너로 교체하면, 기존 컨테이너 내부에 있던 데이터도 같이 삭제된다.
- 만약 이 컨테이너가 MySQL을 실행시키는 컨테이너였다면 MySQL에 저장된 데이터도 같이 삭제 돼버린다.
- 따라서 컨테이너 내부에 저장된 데이터가 삭제되면 안 되는 경우에는 볼륨(Volume)이라는 개념을 활용해야 한다.
도커의 볼륨(Volume)이란 도커 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이다.
볼륨(Volume)은 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 형태이다.
볼륨 종류
바인드 마운트(Bind Mount)
- 바인드 마운트는 호스트 시스템의 특정 디렉토리나 파일을 컨테이너에 직접 연결하는 방식이다.
- 바인드 마운트는 docker volume ps 명령어로 검색이 되지 않는다.
#docker run -v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로] [이미지명]:[태그명] #예시 docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql |
[호스트의 디렉토리 절대 경로]에 디렉토리가 이미 존재할 경우, 호스트의 디렉터리가 컨테이너의 디렉터리를 덮어씌운다.
[호스트의 디렉토리 절대 경로]에 디렉토리가 존재하지 않을 경우, 호스트의 디렉터리 절대 경로에 디렉터리를 새로 만들고 컨테이너의 디렉터리에 있는 파일들을 호스트의 디렉터리로 복사해온다.
관리형 볼륨(Managed Volume)
- Docker 관리형 볼륨(Volume)은 Docker가 자동으로 생성하고 관리하는 방식이다.
- 사용자가 호스트 시스템의 경로를 지정할 필요가 없으며, Docker가 자동으로 볼륨을 생성하고 관리한다.
- 컨테이너와 별개로 독립된 데이터 저장소로 사용될 수 있다.
호스트 저장 공간 위치
결국 볼륨은 호스트의 저장 장치에 저장되게 되는데 이 위치는 OS마다 다르다.
Linux : /var/lib/docker/volumes/<볼륨명>/_data
macOS : ~/Library/Containers/com.docker.docker/Data/vms/0/data/docker/volumes/<볼륨명>/_data
그러나 macOS의 경우 Docker VM에 직접 접근하기 어려우므로, 일반적으로 다음 방법을 사용한다
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
볼륨 생성 및 컨테이너와 볼륨 연결
#docker run -v [볼륨명]:[컨테이너 내부 경로] [이미지명] #이 명령어는 해당 볼륨이 없다면 생성한다. #예시 mysql의 /var/lib/mysql 경로에 volume1을 매핑 docker run -v volume1:/var/lib/mysql mysql |
볼륨 생성
docker volume create 볼륨명
볼륨 조회
docker volume ls
볼륨 삭제
docker volume rm 볼륨명
'DevOps > Docker' 카테고리의 다른 글
[Docker] 컨테이너 리소스 사용량 제한 (0) | 2025.05.15 |
---|---|
[Docker] Dockerfile (0) | 2025.05.14 |
[Docker] 자주 사용하는 명령어 정리 (1) | 2025.05.13 |
[Docker] 애플리케이션 종료시 Compose 자동시작 (1) | 2024.10.13 |
[Docker + SpringBoot] 스프링부트 로그 파일 남기기 (1) | 2024.10.11 |