스토리지 드라이버

컨테이너 내부에서 사용하는 파일 시스템 크기는 도커의 스토리지 드라이버에 따라 다르다. 일반적으로 우분투 리눅스에서 사용하는 overlay2 스토리지로 설정 되어있는 경우엔 호스트와 컨테이너가 저장공간의 크기를 공유한다.

도커의 스토리지 드라이버를 확인하는 방법은 docker info 명령어 안에 포함되며 다음과 같이 볼 수 있다.

$ docker info | grep Storage

> Storage Driver: overlay2

컨테이너 실행 후 용량 확인

용량을 확인해보니 다음과 같다. 첫 번째는 호스트, 두 번째는 임의로 실행한 우분투 컨테이너의 용량이다. 호스트 머신의 루트 디렉터리 용량이 163GB 인것을 알 수 있고, 컨테이너의 overlay 시스템 용량도 163GB임을 볼 수 있다.

$ df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       163G  134G   21G  87% /
$ df -h

Filesystem      Size  Used Avail Use% Mounted on
overlay         163G  134G   21G  87% /
tmpfs            64M     0   64M   0% /dev
tmpfs            32G     0   32G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/sda3       163G  134G   21G  87% /etc/hosts
tmpfs            32G     0   32G   0% /proc/asound
tmpfs            32G     0   32G   0% /proc/acpi
tmpfs            32G     0   32G   0% /proc/scsi
tmpfs            32G     0   32G   0% /sys/firmware

devicemapper 저장공간 설정

주로 Redhat 계열 리눅스를 위해 개발된 스토리지 드라이버인데 성능상의 이유로 더 이상 사용을 권장하진 않는다. 기본적으로 컨테이너는 10GB의 저장공간을 할당한다.

기본값 변경

var/default/docker 파일을 수정하여 다음 옵션을 추가한다. 아래에 명시된 2개 외에도 다른 옵션들이 선언되어 있다면 해당 옵션을 추가만 한다. 아래 옵션은 20GB로 변경하는 옵션이다.

DOCKER_OPTS="--storage-driver=devicemapper" --storage-opt dm.basesize=20G"

위의 옵션은 도커 엔진이 이미지를 내려받을 때 이미지의 옵션으로 내장하기에 이미 내려받은 이미지로 만든 컨테이너는 적용되지 않는다. 도커 서비스를 재시작하고 기존 이미지들은 새로 내려받아준다.

$ service docker stop
$ rm -rf /var/lib/docker    # 이미지 비우기(필요 시)
$ service docker start

컨테이너 실행 시 설정

또한 --storage-opt 옵션을 도커 컨테이너 생성 시에 주어서 공간의 크기를 제어할 수 있다. 실행옵션으로 주는 값은 /var/default/docker에서 준 dm.basesize 값보다 커야함에 유의하자. 방식은 아래와 같다.

$ docker run -it --storage-opt sizer=25G centos:7

overlay2 저장공간 설정

해당 스토리지 드라이버에서는 전제조건이 디스크의 파일 시스템이 xfs여야한다. 우선 없다면 디스크 추가 혹은 분할로 xfs 파일 시스템을 새로 만들고 호스트에 마운트를 해줘야한다. 가상머신의 경우엔 물리 PC보다 작업 난이도가 쉬울 수 있다. 참고하자

파일 시스템 포맷 및 마운트

$ mkfs.xfs /dev/{새로운디스크}  # ex) /dev/xvdf

$ mkdir /mnt/xfs
$ mount /dev/{새로운디스크} /mnt/xfs -o rw,pqutoa

해당 마운트 작업은 /etc/fstab을 이용하는 것이 편리하고 일반적이다.

도커 데몬 설정 추가

도커 데몬 설정 추가는 위와 마찬가지로 /var/default/docker 파일을 수정하면된다.

DOCKER_OPTS="--storage-driver=overlay2 --data-root=/mnt/xfs"

설정 적용 및 도커 재시작을 해주자.

$ systemctl daemon-reload
$ systemctl restart docker

컨테이너 실행 시 적용

컨테이너 실행 시 --storage-opt 옵션으로 적용할 수 있다. 실행 후 아래와 같이 확인 가능하다.

$ docker run -it --storage-opt size=10G centos:7
$ df -h 

Filesystem      Size  Used Avail Use% Mounted on
overlay         10G   8.0K   10G   1% /

댓글남기기