Docker 이미지 레이어와 캐시
소스 코드 한 줄만 바꿨는데 빌드할 때마다 npm install이 처음부터 다시 도는 경우가 있다. 이미지는 레이어(layer)의 스택이고 Docker는 레이어 단위로 빌드 결과를 캐시하기 때문이다. 어떤 레이어가 깨지면 그 아래 레이어가 줄줄이 다시 빌드된다. 그래서 Dockerfile의 명령어 순서가 빌드 속도를 좌우한다. 아래에서는 이미지를 빌드하면서 캐시가 깨지는 순간을 docker build 로그로 확인하고, 명령어 순서가 빌드 시간을 어떻게 바꾸는지 측정한다. 모든 출력은 Docker 29.3.1에서 돌린 결과다. 이미지는 읽기 전용 레이어의 스택이다 Dockerfile의 각 명령어(RUN, COPY, ADD 등)는 직전 상태로부터의 변경분만 담은 읽기 전용 레이어를 하나씩 만든다. 컨테이너를 실행하면 이 레이어들이 OverlayFS(현재 기본 스토리지 드라이버 overlay2) 위에서 하나의 파일 시스템 뷰로 합쳐진다. ...