[Docker] Docker가 Image Layer를 구성하는 방법

[Docker] 도커의 레이어(Layer)에 대해 알아보자.

개요


도커는 Dockerfile 을 읽어들여, 파일에 변화를 주는 커맨드(명령어) 마다 새로운 이미지 레이어를 만든다.

모든 줄(라인)마다 레이어를 만드는 것이 아닌 파일에 변화가 발생하는 경우만 이미지 레이어를 생성한다.

파일 시스템에 변화를 주지 않는 무의미한 커맨드의 반복이나, echo 와 같이 stdout 을 발생시키는 커맨드, ‘LABEL’ 과 같은 메타데이터를 수정하는 명령들은 새로운 이미지를 만들지 않는다.

도커 이미지는 컨테이너를 생성하기 위한 모든 정보를 갖고 있기 때문에 보통 수백 MB ~ 수 GB 가 넘는다.

기존 이미지에서 작은 변경사항이 생겨 도커 파일에 코드 한줄을 추가해 다시 이미지를 만들고 그 이미지를 다운로드 받는다고 가정하면, 겨우 코드 한줄을 추가했는데 이미지의 불변성 때문에 수백MB ~ 수GB 가 되는 이미지를 다우 받는것은 비효율적이다.

이를 해결하기 위한 개념이 이미지 Layer 개념이다.

Image Layer