Layered Architecture에 대해 이해하기 쉽게 간략하게 정리하고자 한다.
예를 들어 다음과 같은 Docker File이 있다.
FROM Ubuntu # Layer 1
RUN apt-get update && apt-get -y install python # Layer 2
RUN pip install flask flask-mysql # Layer 3
COPY . /opt/source-code # Layer 4
ENTRYPOINT FLASK_APP=/opt/source-code/app.py flask run $ Layer 5
해당 Docker File에서 5개의 Layer가 생성된다.
각 Layer는 이전 Layer의 변경 사항만을 저장한다.
해당 Layer 파일들은
Docker Cache에 저장되고, Base Ubuntu Layer가 필요한 다른 Docker File에서 재사용된다.
-> 따라서 이 파일들은 Read Only여야 한다.
이후 해당 컨테이너를 실행할 시 다음과 같은 일이 벌어진다.
Layer 6. Container Layer ( Read/Write )
-> 이를 COPY-ON-WRITE 라 한다.

앞서 말한 Layer를 담당하고, 효율적인 작업을 위한 Driver로 생각하면 된다.
종류 : AUFS, ZFS, overlay2, 등이 있다.
StorageDriver : https://docs.docker.com/engine/storage/drivers/
종류 : https://junstar92.tistory.com/170