Storage in Docker

zuckerfrei·2024년 1월 12일
0

Docker

목록 보기
3/4

CKA 강의 중 컨테이너 스토리지에 대한 내용을 정리했다.


Layered Architecture

2번 도커 파일은 1번 도커 파일과 거의 유사함

layer 1,2,3 은 동일하기 때문에 2번 파일로 빌드할 때 1,2,3 단계를 건너뜀
→ 이전 계층을 캐시해서 재사용함

이미지를 더 빠르게 만들고 디스크 공간을 효율적으로 절약 가능


Container Layer

image layer : read only
container layer : read & write

컨테이너 실행시 마지막 최종 레이어(container layer)를 만들게 되며, 이 레이어는 읽고 쓰기가 가능하다.
컨테이너의 애플리케이션에서 생성되는 모든 데이터(로그, 임시파일) 이 레이어에 저장된다.
컨테이너가 살아있을 때까지 이 레이어는 유지되지만, 컨테이너가 삭제되면 이 레이어와 그 내부의 모든 데이터들도 삭제된다.


Volumes

컨테이너의 데이터를 영구적으로 유지하고 싶다면?

1) 볼륨 마운팅

도커 볼륨을 생성하고 컨테이너 내부로 마운팅 하는 것

도커 볼륨은 일반적으로 /var/lib/docker 경로에 존재함

만약 data_volume2 라는 볼륨을 생성하지 않고 컨테이너 실행 명령을 날렸을 경우, 도커가 알아서 data_volume2 라는 볼륨을 생성한다.

2) 바인드 마운팅

도커 볼륨을 생성하지 않고 마운트 하는 방식

호스트 또는 외부 경로를 컨테이너 내부로 마운팅 하는 것

이 때 반드시 절대 경로를 사용해야 한다.

docker run -v /data/mysql:/var/lib/mysql mysql

# -v는 예전 방식
# 더 명확한 --mount 사용을 권장함
docker run \
--mount type=bind,source=/data/mysql, target=/var/lib/mysql mysql

Storage Driver

레이어드 아키텍쳐를 유지하고 파일의 이동, 복사, 쓰기를 가능하게 하는 수행자. 이미지와 컨테이너의 스토리지를 관리한다.

종류 : AUFS, ZFS, BTRFS, Device Mapper, Overlay, Overlay2

호스트의 OS에 따라 스토리지 드라이버를 다르게 사용한다.
스토리지 드라이버마다 다른 성능과 특징이 있다고 한다.


도커 공식문서에서는 모든 리눅스에 대해 overlay2를 권장한다.
또한 device mapper는 삭제될 예정이니 다른 드라이버로 변경하라고 한다.

Volume Driver

도커 볼륨은 storage driver가 처리하는 것이 아니라, volume driver plugin이 처리한다.
기본값은 local이지만, 그 밖의 다른 드라이버 종류가 많다.

이렇게 rexray/ebs 라는 볼륨 드라이버를 사용하도록 설정한다면,
컨테이너에서 생성되는 데이터는 aws EBS(스토리지)로 적재된다.
그러면 컨테이너가 종료되어도 생성된 데이터는 aws EBS 내부에 남게 된다.

profile
무설탕 음료를 좋아합니다

0개의 댓글