5.4. 그래프 드라이버 선택
컨테이너 런타임은 이미지와 컨테이너를 그래프 드라이버(예: DeviceMapper 및 OverlayFS)에 저장합니다. 각각에는 장단점이 있습니다.
지원 가능성 및 사용 경고 등 OverlayFS에 대한 자세한 내용은 해당 버전의 Red Hat Enterprise Linux (RHEL) 7 릴리스 노트 를 참조하십시오.
이름 | 설명 | 혜택 | 제한 사항 |
---|---|---|---|
OverlayFS
| 하위 시스템(parent)과 상위(parent) 파일 시스템과 작업 디렉터리(하위 시스템과 동일한 파일 시스템)를 결합합니다. 하위 파일 시스템은 기본 이미지이며 새 컨테이너를 만들 때 델타가 포함된 새로운 상위 파일 시스템이 생성됩니다. |
| POSIX 호환이 아닙니다. |
장치 매퍼 씬 프로비저닝 | LVM, 장치 매퍼 및 dm-thinp 커널 모듈을 사용합니다. 루프백 장치를 제거하는 것과는 다릅니다. 원시 파티션(파일 시스템 없음)과 간단히 대화합니다. |
|
|
장치 Mapper loop-lvm | 장치 매퍼 씬 프로비저닝 모듈(dm-thin-pool)을 사용하여 CoW(Copy-On-Write) 스냅샷을 구현합니다. 각 장치 매퍼 그래프 위치에 대해 각각 두 개의 블록 장치를 기반으로 하는 씬 풀이 생성됩니다. 하나는 데이터용이고 하나는 메타데이터용입니다. 기본적으로 이러한 블록 장치는 자동으로 생성된 스파스 파일의 루프백 마운트를 사용하여 자동으로 생성됩니다. | 이는 상자 밖으로 작동하므로 프로토타이핑 및 개발 목적에 유용합니다. |
|
성능 향상을 위해 Red Hat은 장치 매퍼를 통해 overlayFS 스토리지 드라이버를 사용하는 것이 좋습니다. 그러나 프로덕션 환경에서 이미 Device Mapper를 사용하는 경우 컨테이너 이미지 및 컨테이너 루트 파일 시스템에 씬 프로비저닝을 사용하는 것이 좋습니다. 그러지 않으면 항상 CRI-O에 Docker 엔진 또는 overlayFS에 overlayfs2를 사용합니다.
루프 장치를 사용하면 성능에 영향을 줄 수 있습니다. 계속 사용할 수 있지만 다음 경고 메시지가 기록됩니다.
devmapper: Usage of loopback devices is strongly discouraged for production use. Please use `--storage-opt dm.thinpooldev` or use `man docker` to refer to dm.thinpooldev section.
간편한 스토리지 설정을 위해 docker-storage-setup
유틸리티를 사용하면 많은 설정 세부 정보를 자동화할 수 있습니다.
Overlay의 경우
/etc/sysconfig/docker-storage-setup 파일을 편집하여 장치 드라이버를 지정합니다.
STORAGE_DRIVER=overlay2
참고CRI-O를 사용하는 경우
STORAGE_DRIVER=overlay
를 지정합니다.CRI-O에서는 기본
오버레이
스토리지 드라이버에서overlay2
최적화를 사용합니다.OverlayFS를 사용하면 다른 논리 볼륨에
imagefs
가 필요한 경우CONTAINER_ROOT_LV_NAME
및CONTAINER _ROOT_LV_MOUNT_PATH
를 설정해야 합니다.CONTAINER_ROOT_LV_MOUNT_PATH
를 설정하려면CONTAINER_ROOT_LV_NAME
을 설정해야 합니다. 예를 들어CONTAINER_ROOT_LV_NAME="container-root-lv"
. 자세한 내용은 Overlay Graph 드라이버 사용을 참조하십시오.docker 스토리지(예: /dev/xvdb) 전용 디스크 드라이브가 있는 경우 /etc/sysconfig/docker-storage-setup 파일에 다음을 추가합니다.
DEVS=/dev/xvdb VG=docker_vg
docker-storage-setup
서비스를 다시 시작하십시오.# systemctl restart docker-storage-setup
docker가 overlay2를 사용하고 있고 디스크 공간 사용을 모니터링하려면
docker info
명령을 실행합니다.# docker info | egrep -i 'storage|pool|space|filesystem'
출력 예
Storage Driver: overlay2 1 Backing Filesystem: extfs
- 1
overlay2
를 사용할 때docker info
출력.
OverlayFS는 Red Hat Enterprise Linux 7.2의 컨테이너 런타임 사용 사례에서도 지원되며, 보다 빠르게 시작 시간 및 페이지 캐시 공유를 제공하므로 전체 메모리 활용도를 줄임으로써 밀도를 향상시킬 수 있습니다.
Thinpool의 경우
/etc/sysconfig/docker-storage-setup 파일을 편집하여 장치 드라이버를 지정합니다.
STORAGE_DRIVER=devicemapper
docker 스토리지(예: /dev/xvdb) 전용 디스크 드라이브가 있는 경우 /etc/sysconfig/docker-storage-setup 파일에 다음을 추가합니다.
DEVS=/dev/xvdb VG=docker_vg
docker-storage-setup
서비스를 다시 시작하십시오.# systemctl restart docker-storage-setup
다시 시작한 후
docker-storage-setup
은docker_vg
라는 볼륨 그룹을 설정하고 thin-pool 논리 볼륨을 생성합니다. RHEL의 씬 프로비저닝 문서는 LVM 관리자 가이드에서 확인할 수 있습니다.lsblk
명령을 사용하여 새로 생성된 볼륨을 확인합니다.# lsblk /dev/xvdb
출력 예
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvdb 202:16 0 20G 0 disk └─xvdb1 202:17 0 10G 0 part ├─docker_vg-docker--pool_tmeta 253:0 0 12M 0 lvm │ └─docker_vg-docker--pool 253:2 0 6.9G 0 lvm └─docker_vg-docker--pool_tdata 253:1 0 6.9G 0 lvm └─docker_vg-docker--pool 253:2 0 6.9G 0 lvm
참고씬 프로비저닝된 볼륨은 마운트되지 않으며 파일 시스템(프로덕션 컨테이너에 XFS 파일 시스템이 있음)이 없으므로
df
출력에 표시되지 않습니다.docker가 LVM thinpool을 사용하고 있는지 확인하고 디스크 공간 사용을 모니터링하려면
docker info
명령을 실행합니다.# docker info | egrep -i 'storage|pool|space|filesystem'
출력 예
Storage Driver: devicemapper 1 Pool Name: docker_vg-docker--pool 2 Pool Blocksize: 524.3 kB Backing Filesystem: xfs Data Space Used: 62.39 MB Data Space Total: 6.434 GB Data Space Available: 6.372 GB Metadata Space Used: 40.96 kB Metadata Space Total: 16.78 MB Metadata Space Available: 16.74 MB
기본적으로 씬 풀은 기본 블록 장치의 40%를 사용하도록 구성됩니다. 스토리지를 사용하면 LVM에서 씬 풀을 100%까지 자동으로 확장합니다. 따라서 Data Space Total
값이 기본 LVM 장치의 전체 크기와 일치하지 않습니다.
개발 시 Red Hat 배포판의 docker는 기본적으로 루프백이 마운트된 스파스 파일로 설정됩니다. 시스템이 루프백 모드를 사용하고 있는지 확인하려면 다음을 수행합니다.
# docker info|grep loop0
출력 예
Data file: /dev/loop0
5.4.1. SELinux에서 OverlayFS 또는 DeviceMapper 사용의 이점
OverlayFS 그래프의 주요 장점은 동일한 노드에서 이미지를 공유하는 컨테이너 간에 Linux 페이지 캐시를 공유하는 것입니다. OverlayFS의 이 특성으로 인해 컨테이너를 시작하는 동안 I/O(I/O)가 감소되고(따라서 여러 100밀리초 동안 컨테이너 시작 시간이 빨라짐) 및 노드에서 유사한 이미지가 실행될 때 메모리 사용량이 감소됩니다. 이 두 가지 결과는 특히 밀도를 최적화하기위한 목표를 가진 많은 환경에서 유용하며 높은 컨테이너 량율 (예: 빌드 파업) 또는 이미지 콘텐츠에 중요한 중복을 가진 사람들이 있습니다.
씬 프로비저닝된 장치가 컨테이너별로 할당되므로 페이지 캐시 공유는 DeviceMapper에서 불가능합니다.
OverlayFS는 RHEL (Red Hat Enterprise Linux) 7.5의 기본 Docker 스토리지 드라이버이며 7.3 이상에서 지원됩니다. 성능을 향상시키기 위해 OverlayFS를 RHEL의 기본 Docker 스토리지 구성으로 설정합니다. Docker 컨테이너 런타임과 함께 사용하려면 OverlayFS 구성 지침을 참조하십시오.