Storage - Introduction to Docker Storage

2025. 1. 13. 20:00쿠버네티스/쿠버네티스

728x90
반응형

 

 

 

 

 

https://inspirit941.tistory.com/412

 

CKA 대비 kubernetes 스터디 - 7. Storage

Docker Storage 크게 두 가지 개념이 있다. Storage Driver docker는 데이터를 어디에 저장하는지, container에서 fileSystem을 어떻게 관리하는지. docker image를 실행하면, /var/lib/docker 라는 경로를 컨테이너 내부

inspirit941.tistory.com

 

https://velog.io/@zuckerfrei/Storage-in-Docker

 

 

 

https://blog.knoldus.com/unionfs-a-file-system-of-a-container/

 

Tale of a Container's File System

Namespace, CGroup, and Union file-system are the basic building blocks of a container. Let's have our focus on file-system. Why yet another file-system for the

blog.knoldus.com

도커란 무엇인가요?

도커는 컴퓨터에서 프로그램(소프트웨어)을 실행하기 위해 필요한 모든 것을 한 곳에 담아주는 **"컨테이너"**라는 기술을 사용하는 도구입니다. 이 컨테이너는 마치 작은 상자처럼, 프로그램이 잘 작동하도록 필요한 파일과 설정을 모두 담고 있어요. 그래서 어디서든 똑같이 실행될 수 있답니다!

도커가 데이터를 저장하는 방법

도커는 컴퓨터 안에 특별한 폴더를 만들어 데이터를 저장해요. 이 폴더는 보통 /var/lib/docker/라는 위치에 있습니다. 여기에는 다음과 같은 것들이 저장돼요:

  • 이미지(Image): 프로그램을 실행하기 위해 필요한 기본 파일들.
  • 컨테이너(Container): 이미지를 기반으로 실제로 실행되는 프로그램.
  • 볼륨(Volume): 컨테이너가 사용하는 데이터(예: 저장해야 하는 파일들).

이미지와 컨테이너의 차이

  1. 이미지는 요리책처럼 프로그램을 실행하기 위한 "설명서"입니다. 예를 들어, "우분투(Ubuntu)"라는 운영체제를 기반으로 하고, 그 위에 파이썬(Python)이라는 프로그램을 설치하는 식으로 단계별로 만들어져요.
  2. 컨테이너는 이미지를 사용해 실제로 실행되는 프로그램이에요. 요리책대로 요리를 만든 음식이라고 생각하면 돼요.

이미지의 층(layer) 구조

도커의 이미지는 여러 층으로 이루어져 있어요. 마치 샌드위치처럼 각 층마다 다른 내용물이 들어있죠:

  • 첫 번째 층: 기본 운영체제(예: 우분투).
  • 두 번째 층: 필요한 프로그램 설치(예: 파이썬).
  • 세 번째 층: 소스 코드 추가(예: 우리가 만든 프로그램).

각 층은 이전 층에서 달라진 부분만 저장하기 때문에 공간을 절약할 수 있어요.

컨테이너의 읽기/쓰기 구조

컨테이너는 이미지를 기반으로 실행되는데, 이미지 자체는 수정할 수 없어요(읽기 전용). 대신, 컨테이너 위에 새로운 쓰기 가능한 층이 추가돼요. 이 층은 다음과 같은 데이터를 저장합니다:

  • 로그 파일(프로그램 작동 기록).
  • 임시로 생성된 파일들.

하지만 컨테이너가 삭제되면 이 데이터도 함께 사라져요.

데이터를 영구적으로 저장하려면?

컨테이너가 삭제돼도 데이터를 보존하려면 **볼륨(volume)**이라는 기능을 사용해요. 볼륨은 컴퓨터의 특정 폴더를 컨테이너와 연결해 데이터를 안전하게 저장할 수 있게 해줍니다.

https://velog.io/@zuckerfrei/Storage-in-Docker

볼륨 사용 방법

  1. 볼륨 생성: docker volume create [볼륨 이름]
  2. 컨테이너와 연결: docker run -v [볼륨 이름]:[컨테이너 내부 경로]

스토리지 드라이버(Storage Driver)

도커가 이런 구조를 관리할 수 있도록 도와주는 것이 바로 스토리지 드라이버입니다. 운영체제에 따라 적합한 드라이버가 자동으로 선택됩니다:

  • 예: 우분투에서는 AUFS, CentOS에서는 Device Mapper 등이 사용돼요.

요약

도커는 프로그램을 쉽게 실행하고 관리할 수 있도록 도와주는 도구입니다. 이미지는 읽기 전용이고, 컨테이너는 실행 중 데이터를 쓸 수 있어요. 데이터를 영구적으로 저장하려면 볼륨을 사용하면 됩니다!\


강의 내용 요약

  1. 스토리지 드라이버(Storage Drivers)
    • 스토리지 드라이버는 이미지와 컨테이너의 스토리지를 관리하는 역할을 한다.
    • 하지만 데이터를 **영구적으로 저장(persist storage)**하려면 **볼륨(Volumes)**을 생성해야 한다.
  2. 볼륨(Volumes)
    • 볼륨은 스토리지 드라이버가 아닌 **볼륨 드라이버 플러그인(Volume Driver Plugins)**에 의해 처리된다.
    • 기본 볼륨 드라이버 플러그인은 local이다.
      • local 볼륨 플러그인은 Docker 호스트에 볼륨을 생성하고 데이터를 /var/lib/docker/volumes 디렉토리에 저장한다.
    • 다양한 서드파티 솔루션을 지원하는 여러 볼륨 드라이버 플러그인이 존재한다:
      • 예: Azure File Storage, Convoy, DigitalOcean Block Storage, Flocker, Google Compute Persistent Disks, Cluster FS, NetApp, REX-Ray, Portworx, VMware vSphere Storage 등.
  3. REX-Ray와 같은 특정 볼륨 드라이버
    • REX-Ray는 다양한 스토리지 제공자를 지원한다:
      • AWS EBS (Elastic Block Store), S3
      • EMC 스토리지 어레이 (Isilon, ScaleIO)
      • Google Persistent Disk
      • OpenStack Cinder 등
    • 예를 들어, Docker 컨테이너를 실행할 때 REX-Ray EBS를 사용하여 Amazon EBS에서 볼륨을 프로비저닝(provision)할 수 있다.
      • 이 경우 컨테이너가 종료되더라도 데이터는 AWS 클라우드에 안전하게 저장된다.
  4. 다음 강의 예고
    • 이후 강의에서는 Kubernetes에서의 볼륨 관리에 대해 더 자세히 다룰 예정이다.

  1. 스토리지 드라이버(Storage Drivers)
    스토리지 드라이버는 도커(Docker) 이미지와 컨테이너의 데이터를 관리하기 위한 핵심 구성 요소입니다. 그러나 컨테이너의 데이터는 기본적으로 컨테이너가 종료되면 사라지기 때문에 데이터를 영구적으로 저장하려면 **볼륨(Volume)**을 사용해야 합니다.
  2. 볼륨(Volumes)과 볼륨 드라이버 플러그인
    도커에서 볼륨은 데이터를 영구적으로 저장하기 위한 메커니즘입니다. 하지만 볼륨은 스토리지 드라이버가 아니라 별도의 볼륨 드라이버 플러그인에 의해 관리됩니다.
    • 기본적으로 도커는 local이라는 기본 볼륨 드라이버 플러그인을 제공합니다. 이 플러그인은 도커 호스트(컨테이너가 실행 중인 서버)에 볼륨을 생성하며, 생성된 데이터는 /var/lib/docker/volumes 디렉토리에 저장됩니다.
    • 하지만 많은 경우 클라우드나 외부 스토리지 솔루션과 통합하여 데이터를 저장할 필요가 있습니다. 이를 위해 여러 서드파티 볼륨 드라이버 플러그인이 제공됩니다:
      • 예: Azure File Storage, DigitalOcean Block Storage, Google Compute Persistent Disks 등.
  3. REX-Ray와 같은 고급 볼륨 드라이버
    REX-Ray는 AWS EBS(Amazon Elastic Block Store), S3(Simple Storage Service), Google Persistent Disk 등 다양한 클라우드 및 온프레미스 스토리지를 지원합니다.
    예를 들어, 도커 컨테이너를 실행할 때 REX-Ray EBS를 사용하여 Amazon EBS에서 새로운 볼륨을 생성하고 이를 컨테이너에 연결할 수 있습니다. 이렇게 하면 컨테이너가 종료되더라도 데이터는 Amazon EBS에 안전하게 저장됩니다.
  4. Kubernetes와의 연계
    이후 강의에서는 Kubernetes에서의 볼륨 관리와 스토리지 통합 방법에 대해 다룰 예정입니다. Kubernetes는 도커보다 복잡한 환경에서 스토리지를 관리하기 위해 설계된 추가 기능들을 제공합니다.

핵심 정리

  • 도커에서 데이터를 영구적으로 유지하려면 볼륨을 사용해야 하며, 이는 볼륨 드라이버 플러그인으로 관리된다.
  • 기본 플러그인은 local이며, 서드파티 플러그인을 통해 다양한 클라우드 및 외부 스토리지를 활용할 수 있다.
  • REX-Ray와 같은 고급 플러그인은 AWS EBS, Google Persistent Disk 등 여러 스토리지 제공자를 지원한다.
  • Kubernetes 환경에서도 이러한 개념은 확장되어 적용된다.
반응형