도커 이미지가 있고 그것을 축소하거나 크기를 줄이려면 이미지를 축소했다고 가정합니다. 이는 런타임 아티팩트에 유용하기 때문에 저장 및 푸시/풀에 필요한 리소스를 최소한으로 사용할 수 있습니다.도커 이미지를 부숴 버리고 평평하게하지 않으면 레지스트리 캐싱에 나쁜 영향을 미칩니 까?
그러나 컨테이너 저장 부분에 이미지가 저장 될 때 발생하는 계층을 다시 플랫 키 (평평하게 만드는 것)와 다시 사용하는 것 사이에 트레이드 오프가 있는지 궁금합니다.
예를 들면 다음과 같습니다. 여러 개의 레이어가있는 이미지 (일반 오래된 Docker 이미지)가 있고 크기가 500MB 정도라고 가정 해 보겠습니다. 스쿼시 또는 병합을 사용하여 250 MB 크기의 단일 레이어로 압축합니다.
이제 이미지를 변경하고 버전 2를 만들어야한다고 가정 해 보겠습니다. 버전 2는 콘테스트의 후기 레이어에서 아주 조금 변경되었으므로 CMD
지침 바로 전에 설정 파일의 이름을 변경했을 수 있습니다 또는 뭔가.
많은 확장 된 레이어를 레지스트리로 푸시 한 경우이 새로운 이미지를 푸시하려면 다른 최종 레이어 만 레지스트리의 캐시에 저장해야합니다. 이는 전체 크기 (초기 이미지와 새 버전 2 이미지를 함께 사용하는 경우)는 변경된 마지막 레이어에 따라 550MB 또는 그 이상이 될 것입니다.
한편 평면화 한 경우 새 버전 2 이미지는 완전히 새로운 단일 레이어 이미지이며 원래 컨테이너와 공통된 기록이 없습니다. 로컬 Docker 인스턴스는 병합과 관련된 레이어 기록을 볼 수 있지만 레지스트리에는 포함되어 있지 않습니다.
이 경우 레지스트리의 약 500MB를 저장해야합니다. 이미지의 첫 번째 버전과 두 번째 버전은 각각 250MB입니다.
이 작업을 세 번 수행하자마자 병합 된 이미지의 전체 공간은 실제로 입니다. 이는 확장 레이어 이미지의 증분 변경 공간보다 큽니다.
내가 작동하는 방식에 대해 누락 된 것이 있습니까? 컨테이너를 사용하기 위해 컨테이너를 최종 목적지로 보내기 전에 즉시 병합을 수행하기를 원하지만, 이 아닐 경우은 일반적으로 레지스트리에 저장할 때 병합을 수행하려고합니다.
기본 이미지가 너무 커서 평평하게하는 것이 크기가 너무 커지므로 평범한 경우를 이해하려고 시도하고 있는데 레이어의 특정 측면을 설명하는 설명서를 찾을 수 없습니다. 평평하게하다.