Docker Storage 이해

Dev & Ops 2016.12.16 10:25

2016.12.16 덧붙임

- 도커는 원래 Ubuntu에서 개발, Ubuntu의 파일 스토리지 시스템은 AUFS.
- Red Hat 계열 배포판 (RHEL, CentOS, ...)에는 AUFS가 존재하지 않음.
- Red Hat 계열 리눅스를 위해,
도커는 Device Mapper를 2번째 Storage Backend로 수용함.
- Red Hat 계열 리눅스에 도커를 설치하면,

  Device Mapper가 도커의 Storage Backend로 동작 (loop-lvm).
- 만약, 도커를 상용 수준으로 운영하려면,

  Device Mapper를 loop-lvm(디폴트)가 아닌 direct-lvm으로 설정/운영해야 함.

- 도커 스토리지가 충분한 공간 위에서 안정적으로 운영되지 못하면,

  사용하는 컨테이너 이미지의 종류가 다양해질수록

  또 실행중인 컨테이너의 수가 많아질수록 시스템이 정상동작하지 못할 가능성이 높아짐.



2016.01.29 원글

Q: 도커를 쓸 때 궁금했다
- 도커허브에서 가져온 도커 이미지는 어디에 저장되는 걸까?
- 도커 컨테이너 안에 write 하는 데이터는 어디에 저장되는 걸까?

A: 알고보니, <도커 스토리지>에 저장됐다
- <도커 이미지>는 layer 구조를 갖는다
- <도커 컨테이너>의 데이터는 CoW (Copy On Write) 정책에 따라 저장된다
+ RHEL/ CentOS/ Fedora 에서는 <도커 스토리지> 설정 작업이 필요하다 (Device Mappr)
  - 디폴트 스토리지는 loopback 장치
  - 안정적이지 않음
- Ubuntu는 도커 패키지 설치후 도커 스토리지 설정 없이 그냥 써도 좋다 (AUFS)

도커 스토리지 설정 스크립트 (@RHEL/ CentOS/ Fedora)
0. su
  $ su
1. volume이 정상적으로 준비되어 있는지 확인
  # fdisk -l
  - 사용하지 않는 /dev/vdc 장치 존재 확인
2. docker-storage-setup 설정 파일 수정
  # cat <<EOF > /etc/sysconfig/docker-storage-setup DEVS=/dev/vdc VG=docker-vg EOF
3. docker-storage-setup 명령 실행
  # docker-storage-setup
  ...
  Physical volume "/dev/vdc1" successfully created
  Volume group "docker-vg" successfully created
  Rounding up size to full physical extent 16.00 MiB
  Logical volume "docker-poolmeta" created.
  Logical volume "docker-pool" created.
  ...

Ref
- (추천!) Understand images, containers, and storage drivers
  https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/
- Docker and the Device Mapper storage driver
  https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/
- Comprehensive Overview of Storage Scalability in Docker
  http://developerblog.redhat.com/2014/09/30/overview-storage-scalability-docker/

(이상)

저작자 표시 비영리 변경 금지
신고
Posted by ingee
TAG

댓글을 달아 주세요