2025. 1. 13. 20:00ㆍ쿠버네티스/쿠버네티스
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://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): 컨테이너가 사용하는 데이터(예: 저장해야 하는 파일들).
이미지와 컨테이너의 차이
- 이미지는 요리책처럼 프로그램을 실행하기 위한 "설명서"입니다. 예를 들어, "우분투(Ubuntu)"라는 운영체제를 기반으로 하고, 그 위에 파이썬(Python)이라는 프로그램을 설치하는 식으로 단계별로 만들어져요.
- 컨테이너는 이미지를 사용해 실제로 실행되는 프로그램이에요. 요리책대로 요리를 만든 음식이라고 생각하면 돼요.
이미지의 층(layer) 구조
도커의 이미지는 여러 층으로 이루어져 있어요. 마치 샌드위치처럼 각 층마다 다른 내용물이 들어있죠:
- 첫 번째 층: 기본 운영체제(예: 우분투).
- 두 번째 층: 필요한 프로그램 설치(예: 파이썬).
- 세 번째 층: 소스 코드 추가(예: 우리가 만든 프로그램).
각 층은 이전 층에서 달라진 부분만 저장하기 때문에 공간을 절약할 수 있어요.
컨테이너의 읽기/쓰기 구조
컨테이너는 이미지를 기반으로 실행되는데, 이미지 자체는 수정할 수 없어요(읽기 전용). 대신, 컨테이너 위에 새로운 쓰기 가능한 층이 추가돼요. 이 층은 다음과 같은 데이터를 저장합니다:
- 로그 파일(프로그램 작동 기록).
- 임시로 생성된 파일들.
하지만 컨테이너가 삭제되면 이 데이터도 함께 사라져요.
데이터를 영구적으로 저장하려면?
컨테이너가 삭제돼도 데이터를 보존하려면 **볼륨(volume)**이라는 기능을 사용해요. 볼륨은 컴퓨터의 특정 폴더를 컨테이너와 연결해 데이터를 안전하게 저장할 수 있게 해줍니다.
볼륨 사용 방법
- 볼륨 생성: docker volume create [볼륨 이름]
- 컨테이너와 연결: docker run -v [볼륨 이름]:[컨테이너 내부 경로]
스토리지 드라이버(Storage Driver)
도커가 이런 구조를 관리할 수 있도록 도와주는 것이 바로 스토리지 드라이버입니다. 운영체제에 따라 적합한 드라이버가 자동으로 선택됩니다:
- 예: 우분투에서는 AUFS, CentOS에서는 Device Mapper 등이 사용돼요.
요약
도커는 프로그램을 쉽게 실행하고 관리할 수 있도록 도와주는 도구입니다. 이미지는 읽기 전용이고, 컨테이너는 실행 중 데이터를 쓸 수 있어요. 데이터를 영구적으로 저장하려면 볼륨을 사용하면 됩니다!\
강의 내용 요약
- 스토리지 드라이버(Storage Drivers)
- 스토리지 드라이버는 이미지와 컨테이너의 스토리지를 관리하는 역할을 한다.
- 하지만 데이터를 **영구적으로 저장(persist storage)**하려면 **볼륨(Volumes)**을 생성해야 한다.
- 볼륨(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 등.
- 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 클라우드에 안전하게 저장된다.
- REX-Ray는 다양한 스토리지 제공자를 지원한다:
- 다음 강의 예고
- 이후 강의에서는 Kubernetes에서의 볼륨 관리에 대해 더 자세히 다룰 예정이다.
- 스토리지 드라이버(Storage Drivers)
스토리지 드라이버는 도커(Docker) 이미지와 컨테이너의 데이터를 관리하기 위한 핵심 구성 요소입니다. 그러나 컨테이너의 데이터는 기본적으로 컨테이너가 종료되면 사라지기 때문에 데이터를 영구적으로 저장하려면 **볼륨(Volume)**을 사용해야 합니다. - 볼륨(Volumes)과 볼륨 드라이버 플러그인
도커에서 볼륨은 데이터를 영구적으로 저장하기 위한 메커니즘입니다. 하지만 볼륨은 스토리지 드라이버가 아니라 별도의 볼륨 드라이버 플러그인에 의해 관리됩니다.- 기본적으로 도커는 local이라는 기본 볼륨 드라이버 플러그인을 제공합니다. 이 플러그인은 도커 호스트(컨테이너가 실행 중인 서버)에 볼륨을 생성하며, 생성된 데이터는 /var/lib/docker/volumes 디렉토리에 저장됩니다.
- 하지만 많은 경우 클라우드나 외부 스토리지 솔루션과 통합하여 데이터를 저장할 필요가 있습니다. 이를 위해 여러 서드파티 볼륨 드라이버 플러그인이 제공됩니다:
- 예: Azure File Storage, DigitalOcean Block Storage, Google Compute Persistent Disks 등.
- REX-Ray와 같은 고급 볼륨 드라이버
REX-Ray는 AWS EBS(Amazon Elastic Block Store), S3(Simple Storage Service), Google Persistent Disk 등 다양한 클라우드 및 온프레미스 스토리지를 지원합니다.예를 들어, 도커 컨테이너를 실행할 때 REX-Ray EBS를 사용하여 Amazon EBS에서 새로운 볼륨을 생성하고 이를 컨테이너에 연결할 수 있습니다. 이렇게 하면 컨테이너가 종료되더라도 데이터는 Amazon EBS에 안전하게 저장됩니다. - Kubernetes와의 연계
이후 강의에서는 Kubernetes에서의 볼륨 관리와 스토리지 통합 방법에 대해 다룰 예정입니다. Kubernetes는 도커보다 복잡한 환경에서 스토리지를 관리하기 위해 설계된 추가 기능들을 제공합니다.
핵심 정리
- 도커에서 데이터를 영구적으로 유지하려면 볼륨을 사용해야 하며, 이는 볼륨 드라이버 플러그인으로 관리된다.
- 기본 플러그인은 local이며, 서드파티 플러그인을 통해 다양한 클라우드 및 외부 스토리지를 활용할 수 있다.
- REX-Ray와 같은 고급 플러그인은 AWS EBS, Google Persistent Disk 등 여러 스토리지 제공자를 지원한다.
- Kubernetes 환경에서도 이러한 개념은 확장되어 적용된다.
'쿠버네티스 > 쿠버네티스' 카테고리의 다른 글
Networking - Docker Networking - CNI - CLuster Networking (0) | 2025.01.15 |
---|---|
Storage - Container Storage Interface (CSI) (0) | 2025.01.13 |
Secrets test/Encrypting Confidential Data at Rest (0) | 2025.01.09 |
Scheduling-Configuring Scheduler Profiles (1) | 2025.01.01 |
Scheduling-Multiple Schedulers (1) | 2024.12.31 |