본문 바로가기
Docker

[Docker] 도커 볼륨(Docker Volume)

by 괘발자 2025. 5. 7.

컨테이너가 가진 문제점

Docker를 사용하면 특정 프로그램을 컨테이너로 띄울 수 있다. 이 프로그램에 기능이 추가되면 새로운 이미지를 만들어 컨테이너를 실행시켜야 하는데 Docker는 기존 컨테이너에서 변경된 부분을 수정하지 않고, 새로운 컨테이너를 만들어서 교체하게 된다.

 

이렇게 기존 컨테이너를 새 컨테이너로 교체하게 되면, 기존 컨테이너 내부에 있던 데이터도 같이 삭제된다.

따라서  컨테이너 내부에 저장된 데이터가 유지되어야 하는 경우, 볼륨(Volume)을 사용하면 된다.

 

도커 볼륨(Docker Volume)

도커에서 볼륨(Volume)이란 도커 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이다. 볼륨(Volume)은 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 형태이다.

 

도커 볼륨

볼륨(Volume) 명령어

docker run -v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로] [이미지명]:[태그명]

 

MariaDB 컨테이너를 실행하고, MariaDB에 접속하는 과정은 다음과 같다.

docker run -e MARIADB_ROOT_PASSWORD=qwer1234 -d -p 3306:3306 -v c:\dev\mariadb\mariadb_data:/var/lib/mysql:Z mariadb

 

 

명령어 옵션 설명

-e MARIADB_ROOT_PASSWORD : MaraiDB root 계정의 비밀번호 설정

-d : 컨테이너를 백그라운드 실행

-p [포트1]:[포트2] : 로컬 호스트의 포트(포트 1)를 컨테이너의 포트(포트 2)와 연결 

-v [경로1]:[경로2] : Docker 볼륨을 설정하여 MariaDB의 데이터를 로컬 디렉토리(경로 1)에 저장

 

다음 명령어를 통해 MariaDB 컨테이너가 정상적으로 실행되고 있는지 확인할 수 있다.

docker ps

 

컨테이너 내부 접속 명령어를 통해 컨테이너 내부로 접속하여 MariaDB 클라이언트를 실행한다.

docker exec -it 54e bash

 

도커 볼륨이 올바르게 작동하는지 확인하기 위해 mydb라는 이름을 가진 DB를 생성한다.

 

도커 볼륨을 활용한 데이터 지속성 확인

실행 중인 컨테이너를 삭제 후, 새로운 MariaDB 컨테이너를 실행한다.

 

컨테이너 내부에 젒고하여 MariaDB에서 데이터베이스 목록을 확인한 결과, mydb가 존재하는 것을 확인할 수 있다.

 

Docker 볼륨을 사용하여 데이터를 컨테이너 내부의 MariaDB 데이터 디렉토리(/var/lib/mysql)에서 로컬 디렉토리(ex. c:\dev\mariadb\mariadb_data)에 매핑했기 때문에, 컨테이너를 삭제하거나 재실행해도 데이터는 로컬 디렉토리에 그대로 저장된다.

 

[출처]

https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-docker-%EC%9E%85%EB%AC%B8-%EC%8B%A4%EC%A0%84

'Docker' 카테고리의 다른 글

[Docker] COPY : 파일 복사  (1) 2025.05.08
[Docker] Docker 컨테이너 종료 문제와 디버깅 방법  (0) 2025.05.08