Deivcemapper 드라이버는 레드헷 계열의 리눅스를 위해 개발된 스토리지 드라이버다. CentOS 등 포함한 대부분 리눅스 배포판에서 사용할 수 있지만 성능상 이유로 더 이상 사용하지 않는 것을 권장하고 있다. 대체로 overlay 혹은 overlay2 스토리지 드라이버를 사용하는 게 좋다.
vi /etc/default/docker
도커 설정에 들어간다.
DOCKER_OPTS="--storage-driver=devicemapper"
이렇게 Devicemapper 스토리지 드라이버를 사용하게 해준다.
service docker restart
재시작은 꼭 해준다.
ls -la /var/lib/docker/devicemapper/devicemapper/
무려 100GB 크기의 data 파일이 생성되어 있는데 실제로 전체 다 사용하지 않고 100GB 크기의 sparse file(희소파일)에서 공간을 할당 받아 이미지와 컨테이너 레이어를 저장하는 것이다.
이미지와 컨테이너가 분리된 디렉터리로 저장되는 것이 아니라 data 파일로 이뤄진 pool에서 블록 단위로 할당받는 구조이다.
컨테이너와 이미지 블록의 정보는 metadata에 저장된다.
Devicemapper 스토리지 풀에서 공간을 할당 받고 이미지의 스냅숏을 만들어 상위 레이어를 생성한다. 이미지로부터 변경된 사항을 저장하는 컨테이너 레이어는 이 레이어들을 묶은 마운트 포인트에서 새로운 스냅숏을 생성해서 사용된다.
컨테이너 내부에서 새로운 파일을 기록한다. 이미지에 존재하던 데이터에 쓰기 작업을 수행할 때 변경하려는 원본 파일의 블록을 컨테이너에 복사하고 컨테이너 내부에 복사된 블록 파일을 수정한다.
AUFS와 달리 전체 파일을 복사하지 않는 점에서 성능상 이점이 있지만 컨테이너 삭제, 생성 작업이 빠른 편이 아니다.
성능 개선을 위해 loop-lvm을 direct-lvm모드로 변경할 수 있는데 도커 공식 문서를 참고하면 된다.
docker info | grep Data
지금 사용중인 모드를 확인하는 명령어다.
📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] : 컨테이너 저장 공간 체크하기 (0) | 2022.03.01 |
---|---|
[Docker] : ZFS 드라이버 사용하기 (0) | 2022.03.01 |
[Docker] : AUFS 드라이버 사용하기 (0) | 2022.02.28 |
[Docker] : 스토리지 드라이버 원리, CoW 및 RoW 그리고 이미지와 컨테이너 (0) | 2022.02.28 |
[Docker] : 도커 스토리지 드라이버 변경하기 --storage-driver (0) | 2022.02.28 |
댓글