Zeno ZENO

Part 17. Docker Volume 이해하기

이번 글에서는 Docker Volume의 개념을 알아본다. 컨테이너와 데이터의 관계를 이해하고, 데이터 영속성(Persistence)이 왜 중요한지 살펴본다.

Part 17. Docker Volume 이해하기

1. 이번 Part 목표

지금까지는 Docker 컨테이너를 생성하고 MySQL 데이터베이스도 만들어보았다.

하지만 중요한 문제가 하나 있다.

컨테이너를 삭제하면 데이터는 어떻게 될까?


2. 컨테이너는 일회용이다

Docker 컨테이너는 기본적으로 일회용이다.

컨테이너 생성

↓

데이터 저장

↓

컨테이너 삭제

↓

데이터도 삭제

실무에서는 절대 이런 상황이 발생하면 안 된다.


3. 블로그 서비스라면?

예를 들어 블로그를 운영한다고 가정해보자.

게시글 100개 작성

↓

컨테이너 삭제

↓

게시글 전부 삭제

상상만 해도 끔찍하다.


4. Volume이란?

Volume은 Docker가 제공하는 데이터 저장 공간이다.

컨테이너와 별도로 데이터를 보관한다.


5. 컨테이너와 Volume 관계

MySQL 컨테이너

↓

Volume

↓

실제 데이터 저장

데이터는 Volume에 저장된다.


6. 컨테이너를 삭제하면?

컨테이너 삭제

↓

Volume 유지

↓

데이터 유지

새 컨테이너를 만들어도 기존 데이터를 다시 사용할 수 있다.


7. 왜 중요한가?

실무에서는 컨테이너를 자주 교체한다.

배포

업데이트

서버 이전

버전 변경

이런 작업이 발생해도 데이터는 유지되어야 한다.


8. MySQL과 Volume

AD

제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다

화물차리스 전문 화물박사 - 1톤트럭, 특장차 즉시출고

화물차 리스 전문 화물박사

MySQL은 데이터를 파일 형태로 저장한다.

보통 다음 경로를 사용한다.

/var/lib/mysql

Volume은 이 폴더를 외부 저장 공간과 연결한다.


9. Docker Compose 예시

services:

  db:
    image: mysql:8.4

    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

mysql_data라는 Volume을 생성하고 MySQL 데이터 폴더와 연결한다.


10. 지금까지 만든 DB는?

현재 실습 환경은 아직 Volume을 사용하지 않는다.

따라서 컨테이너를 완전히 삭제하면 데이터가 사라질 수 있다.


11. zenoBlog에서는?

zenoBlog도 MySQL을 사용한다.

따라서 실서비스에서는 반드시 Volume을 사용해야 한다.


12. Volume은 어디에 저장될까?

Docker가 관리하는 전용 저장 공간에 저장된다.

개발자는 위치를 직접 신경 쓰지 않아도 된다.


13. Part 17 정리

컨테이너
=
실행 환경

Volume
=
데이터 저장소

컨테이너 삭제
≠
데이터 삭제

실무 DB
=
반드시 Volume 사용

다음 Part에서는 실제 Volume을 생성하고 데이터를 보존하는 실습을 진행한다.

AD

제휴 광고

일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.

AD

'Docker' 카테고리의 다른 글

전체보기