티스토리 뷰
볼륨이란?
볼륨이란 도커 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이다. 볼륨은 컨테이너 내의 저장 공간을 사용하지 않고, 호스트 내의 저장 공간을 공유해서 사용한다.

볼륨을 사용하는 이유?
예를 들어 mysql의 이미지로 컨테이너를 실행시켰는데, mysql 업데이트를 하게 되어 새로운 mysql 이미지로 컨테이너를 띄우게 된다면 기존 내부에 있던 데이터가 같이 삭제하게 된다. 이를 막기 위해 볼륨을 활용하면 된다.
볼륨 활용 전 예제
아래 예제는 mysql 컨테이너를 실행한 후 실제 데이터베이스를 만들고 볼륨을 활용하기 전과 후의 차이를 비교하는 것이다.
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
mysql 이미지를 받고 컨테이너까지 실행하는 명령어다.
docker exec -it [MySQL 컨테이너 ID] bash
실행 중인 mysql 컨테이너에 접근하는 명령어이다.
mysql -u root -p
show databases;
create database testDb
show databaeses;
컨테이너에 접근 후 위의 명령어를 입력하면 아래와 같이 mysql 서버에 들어간 것이다. 그 후 데이터베이스를 생성하고 목록을 보면 아래와 같이 나올 것이다.

docker stop [MySQL 컨테이너 ID]
docker rm [MySQL 컨테이너 ID]
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
docker exec -it [MySQL 컨테이너 ID] bash
mysql -u root -p
show databases;
그 후 컨테이너를 종료 하고 삭제 후 다시 컨테이너를 실행하게 되면 아래와 같이 데이터베이스가 없어진 것을 확인할 수 있다.

볼륨 활용 후 예제
볼륨을 활용하기 앞서 호스트의 저장 공간에 데이터를 저장하기 위해 다음과 같이 별도의 저장할 디렉터리를 만들어야 한다. ex) C:\Users\oniic\docker-mysql
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v "C:/Users/oniic/docker-mysql/mysql_data:/var/lib/mysql" -d mysql
위의 명령어에서 -v 옵션에서 앞이 호스트에 공유할 경유이고 뒤가 컨테이너의 데이터가 저장되는 경로이다. 명령어를 실행하면 호스트의 mysql 관련 데이터가 아래와 같이 저장된 것을 확인할 수 있다. 이제 mysql 접속 후 데이터베이스를 생성하고 컨테이너를 종료 및 제거 후 다시 실행하면 데이터베이스가 제거되지 않은 것으로 확인할 수 있다.

여기서 주의할 점이 있는데 호스트 디렉토리에서 mysql_data를 미리 만들어 놓으면 안 된다. 그래야 처음 이미지를 실행시킬 때 mysql 내부에 있는 /var/lib/mysql 파일들을 호스트 컴퓨터로 공유받을 수 있다. mysql_data 디렉터리를 미리 만들어놓을 경우, 기존 컨테이너의 /var/lib/mysql 파일들을 전부 삭제한 뒤에 mysql_data로 덮어씌워 버린다.
정리
볼륨은 컨테이너의 데이터를 영속적으로 저장하기 위한 메커니즘이다. 기본적으로 컨테이너는 삭제되면 내부 데이터도 함께 사라지는데 이를 해결하기 위해 볼륨을 사용한다.
본 포스팅은 “비전공자도 이해할 수 있는 Docker 입문/실전 /인프런”를 학습한 내용을 정리한 것
'DevOps > Docker' 카테고리의 다른 글
| <Docker> 도커란? (0) | 2026.03.23 |
|---|
