3.5 이미지 레이어 캐시를 이용한 Dockerfile 스크립트 최적화
우리가 조금 전에 빌드한 web-ping 이미지에는 애플리케이션이 구현된 자바스크립트 파일이 들어 있다. 이 파일을 수정하고 이미지를 다시 빌드하면, 새로운 이미지 레이어가 생긴다. 도커의 이미지 레이어가 특정한 순서대로만 배치된다고 가정한다. 그래서 이 순서 중간에 있는 레이어가 변경되면 변경된 레이어보다 위에 오는 레이어를 재사용할 수 없다.
실습 ch03-web-ping 디렉터리에 있는 app.js 파일을 수정하라. 반드시 코드를 수정할 필요는 없고 파일 끝에 빈 줄을 추가하는 정도로도 충분하다. 그다음 새로운 버전의 도커 이미지를 빌드한다.
docker image build -t web-ping:v2 .
이미지를 다시 빌드하면 그림 3-11과 같은 출력 내용을 볼 수 있다. 두 번째부터 다섯 번째 단계까지는 기존에 캐시된 레이어가 재사용됐지만, 6단계와 7단계는 새로운 레이어가 만들어졌다.
Dockerfile 스크립트의 인스트럭션은 각각 하나의 이미지 레이어와 1:1로 연결된다. 그러나 인스트럭션의 결과가 이전 빌드와 같다면, 이전에 캐시된 레이어를 재사용한다. 이런 방법으로 똑같은 인스트럭션을 다시 실행하는 낭비를 줄일 수 있다.