도커 이미지 레이어

SeungHyuk Shin·2022년 7월 26일
0
post-thumbnail
  • 각 레이어는 이미지 그 자체이며, 사람이 지정한 태그가 없는 레이어일 뿐이다. 하지만 레이어들은 자동 생성된 ID를 가지고 있다.

  • 각 계층은 기반이 되는 이미지에 대한 변경 사항을 저장한다.

  • 이미지는 단일 레이어로 구성될 수 있다(스쿼시 명령이 사용된 경우가 많다).

  • 도커 파일의 각 명령은 레이어를 생성한다. (일반적으로 최종 이미지의 레이어만 푸시되거나 이미지가 단일 레이어로 압축되는 다단계 빌드는 제외).

  • 계층은 중복 정보를 전송하지 않고 변경되지 않은 빌드 단계를 건너뛰기 위해 사용됩니다(도커 캐시에 따르면).

용어 정리

"이미지"는 도커 이미지가 출력하는 것, 즉 이미지 ID와 태그가 부착된 이미지에 모두 사용된다. 하지만 태그가 달린 이미지에도 사용된다.

"이미지"는 도커 빌딩 블록일 뿐이며, 태그가 부착되거나 부착되지 않을 수 있다.

이미지는 기본적으로 다르다.

이미지에는 기본 이미지 변경 사항에 대한 정보가 포함되어 있다. 각 이미지에는 참조하는 상위 이미지(스크래치 기반 이미지 제외)가 있다.

해당 이미지가 내보내기 가능한 형식으로 어떻게 표시되는지 자세히 살펴보자.

태그가 지정된 이미지가 하나 이상의 이미지로 구성됨

태그는 단일 도커 이미지를 가리키고 이전의 이미지를 가질 수 있다. 이미지에는 해당 이미지를 가리키는 태그가 많을 수 있다.

또한, 이미지에 태그가 있다고 해서 그것을 기반으로 한 다른 이미지가 있을 수 없다는 것을 의미하지는 않는다.

도커 이미지 명령(또는 도커 이미지 | less -S)의 출력을 보면 이름이 지정되거나 태그가 지정된 이미지가 많을 수 있다. 사람이 읽을 수 있는 이름이 붙어 있지 않은 것들도 분명히 있다. 그러나 태그가 지정되지 않은 것도 있다. 이름/태그 쌍이 없으며, 일반적으로 태그된 이미지의 구성 블록으로 표시된다.

이미지 == 레이어

적어도 이 글에서는. 위의 정의와 구별을 통해 우리는 이미지와 레이어라는 단어를 거의 같의 의미로 사용할 수 있다. 이들은 동일한 구성 요소를 참조하지만, 단지 "레이어"는 이미지가 태그된 이미지의 일부라는 것을 암시한다.

서로 빌드된 5개의 이미지 체인을 가리키는 태그가 지정된 이미지가 있는 경우 해당 태그가 지정된 이미지는 5개의 레이어 또는 5개의 중간 이미지(또는 보는 방법에 따라 4개?)를 가진다.

도커 파일

도커 파일의 각 명령은 하나의 새로운 이미지 계층/중간 이미지를 만든다.

빌드 명령어에 name:tag 플래그를 지정하면 Docker 파일의 마지막 줄에서 생성된 Docker 이미지에 태그가 지정된다.

docker build -t fancyname:fancytag .

각 레이어는 그 자체로 완전한 이미지이다. 기본 이미지(이전 계층)를 가지고 있으며, 이미지의 파일 시스템과 메타데이터에 대한 변경 사항을 반영한다.

컨테이너는 모든 단일 이미지 계층에서 실행할 수 있으며, 사용자에게 친숙한 이름:태그 쌍 대신 ID만 조회하면 된다.

때로 이미지 계층은 중간 이미지라고도 불리는데, 대부분은 이름 붙여지고 태그 붙여진 다른 계층의 일부로서 익명성에 존재하기 때문이다.

레이어 숨기기

이미지 체인을 단일 이미지로 축소하려는 경우 스퀴징을 사용할 수 있다. 모든 변경 사항을 하나의 이미지로 요약한다.

이것은 불필요한 임시 파일을 제거하거나 도커 이미지로 만드는 시크릿이 없는지 확인하는 편리한 접근 방식이었다.

한 계층에서 무언가를 추가하고 다음 계층에서 삭제해도 추가 작업은 첫 번째 계층에 계속 존재하며 이미지를 공유하면 조회할 수 있다.

여러 단계의 빌드는 최종 이미지와 공유되지 않는 빌드 중에 레이어를 사용하는 또 다른 방법입니다. 여러 가지 사용 사례에 적합하며 속도와 편의를 위해 레이어를 사용할 수 있기 때문에 단순히 이미지를 압축하는 것에서 한 단계 발전한 것이다.

왜 레이어일까?

레이어는 이미지를 만들 때 계산을 줄이고, 이미지를 배포(pull과 push)할 때 빠르게 하기 위해 존재한다.

이들은 쓰기 시 복사 파일 시스템을 사용하여 이미지 및 향후 컨테이너를 위한 디스크 공간을 절약한다.

레이어을 사용하면 빌드가 불필요한 단계를 건너뛸 수 있고 pull과 push가 대상에 이미 있는 변경되지 않은 큰 정보 청크의 전송을 건너뛸 수 있기 때문에 도커 이미지 작업을 더 빨리 수행할 수 있다.

0개의 댓글