도커 스토리지와 볼륨 (DevOps)

2025. 6. 13. 15:38·DevOps/Docker

들어가며

도커(Docker)는 경량화된 컨테이너 기술로, 무상태(stateless) 아키텍처를 기반에 두고 있다. 컨테이너는 빠르게 생성,삭제가 가능하다는 장점이 있어서, 트래픽 급증에도 유연하게 대응할 수 있지만, 컨테이너 내부에 데이터를 저장할 경우, 삭제 시 함께 사라진다는 단점이 있어 이를 보완하기 위해 Docker에서는 스토리지(Storage) 개념과 볼륨(Volume) 기능을 함께 제공해줄 수 있다


 

본문

이번 포스팅에서는 도커 스토리지와 볼륨의 특징, 그리고 직접 실습했던 내용을 공유해보려고 한다


도커 스토리지

먼저 도커 스토리지에 대해서 이해하려면, 레이어와 상태 관리의 개념이 중요하다고 생각한다. 

  • 이미지(Image): 여러 읽기 전용 레이어(Read-only layer)가 쌓여 있는 형태
  • 컨테이너(Container): 기존 이미지 위에 쓰기 가능한(Read-write) 레이어가 추가된 상태

위 설명처럼, 컨테이너가 삭제되면 마지막에 생성된 쓰기 레이어도 함께 사라지게 된다. 그래서 컨테이너 자체는 상태를 보존하지 않고 매번 클린 상태에서 실행되기때문에, 버전 업그레이드나 코드 배포 시 이미지 빌드만 갱신하면 빠르게 롤링 업데이트가 가능하다는 특징이 있다


전통적 가상 머신 방식 vs 컨테이너 방식

전통적인 가상머신/물리서버 방식인 Pet은  개별 서버를 소중히 관리하는데 비해서, Cattle 방식은 문제가 생기면 새 컨테이너를 띄우고 기존을 대체하는 구조를 가진다

 

아래 실습 cat indexfromcontainer.html 명령어로, 도커 내부의 파일을 호스트로 복사한후 cat명령어로 HTML내용을 확인할 수 있었다


도커 볼륨


영속성 (Persistence)

컨테이너 삭제나 재생성 시에도 데이터가 유지되는 기능을 영속성이라 한다. 데이터베이스는 한 번 생성한 데이터를 잃으면 안되기때문에 영속성을 확보하기 위해 도커 볼륨을 사용해줄 수도 있다

 

마운트란 ? (Mount)
외부 저장소(볼륨)를 컨테이너 내부 디렉토리와 연결하는 것을 의미하는데, 도커 볼륨 기능을 통해서 외부 공유 저장소에 저장하고, 컨테이너와 공유하기 위해서 공유 폴더를 만들어주는 작업을 볼륨을 마운트한다고 말한다

 

볼륨 생성 및 마운트 실습

1. 볼륨 생성

$ docker volume create mydata

2. 컨테이너 실행 시 마운트

$ docker run -d --name my-postgres \
    -e POSTGRES_PASSWORD=password \
    -v mydata:/var/lib/postgresql/data \
    postgres:13

3. DB 생성 & 확인

$ docker exec -it my-postgres \
    psql -U postgres -c "CREATE DATABASE mydb;"
$ docker exec -it my-postgres \
    psql -U postgres -c "\list"

실습한 코드 전체

 

 

참고한 자료

https://docs.docker.com/storage/volumes/

https://docs.docker.com/storage/

'DevOps > Docker' 카테고리의 다른 글

도커로 레디스 띄워서 스프링 컨테이너랑 통신하기 (DevOps)  (3) 2025.07.29
도커 네트워크, 실습 (DevOps)  (0) 2025.05.26
클라우드 네이티브 애플리케이션 + LEAFY 실습 (DevOps)  (0) 2025.05.11
이미지 레지스트리와 빌드 (DevOps)  (0) 2025.05.11
Docker 이미지와 컨테이너 (DevOps)  (1) 2025.05.11
'DevOps/Docker' 카테고리의 다른 글
  • 도커로 레디스 띄워서 스프링 컨테이너랑 통신하기 (DevOps)
  • 도커 네트워크, 실습 (DevOps)
  • 클라우드 네이티브 애플리케이션 + LEAFY 실습 (DevOps)
  • 이미지 레지스트리와 빌드 (DevOps)
huncozyboy
huncozyboy
이지훈
  • huncozyboy
    열정을 기록하기
    huncozyboy
  • 전체
    오늘
    어제
    • 분류 전체보기 (63)
      • Spring (26)
        • JWT (3)
        • 무한 스크롤 (1)
        • 매칭 로직 (2)
        • OAuth (4)
        • 자동화 (1)
        • 캐싱 (1)
        • AOP (2)
        • Swagger (1)
        • S3 (1)
        • CORS (1)
        • Spring Retry (0)
        • Webhook (2)
        • Grapheme Cluster (1)
        • 연관관계 (1)
        • CS 개념 (5)
      • DevOps (13)
        • 스왑 메모리 (1)
        • Blue Green (2)
        • Docker (7)
        • Route 53 (1)
        • 리버스 프록시 (2)
      • AI (2)
        • Claude Code (1)
        • Copilot (1)
      • CS (4)
        • JAVA (4)
      • Github (1)
        • Conflict (1)
      • Python (4)
        • Langchain (3)
        • Crawling (1)
      • 일상 (3)
        • 회고록 (1)
      • 알고리즘 (10)
        • 투포인터 (0)
        • 슬라이딩 윈도우 (0)
        • 정렬 (0)
        • 이분 탐색 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    OAuth
    aws
    https
    백준
    수도코드
    java
    Docker
    자바
    코테
    알고리즘
    JWT
    스프링
    Spring
    프로그래머스
    redis
    도커
    코딩테스트
    DevOps
    EC2
    LangChain
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
huncozyboy
도커 스토리지와 볼륨 (DevOps)
상단으로

티스토리툴바