본문으로 건너뛰기

도커 이미지 레이어 분석

Docker Image Explorer

내보낸 이미지 tar를 열어 레이어별 명령·크기와 추가·삭제된 파일을 보여 줍니다.

내보낸 Docker·OCI 이미지를 열어 레이어마다 실제로 무엇이 들었는지 보여 줍니다. 크기, 그 레이어를 만든 Dockerfile 단계, 추가한 파일, 그리고 아래 레이어에서 지운 파일까지 나옵니다. 이미지가 왜 300메가바이트인지 알아내는 방법입니다.

🔒 브라우저 안에서만 처리dockerocilayersinspect

내보낸 이미지(.tar) 놓기

`docker save image:tag -o image.tar`이나 podman save로 만든 파일입니다. 이 탭에서 읽고 아무것도 올리지 않습니다.

docker save tar와 OCI 이미지 레이아웃을 모두 엽니다. 설정의 history를 보고 레이어마다 대응하는 Dockerfile 단계를 맞춰 줍니다. empty_layer 로 표시된 단계 — ENV, CMD, LABEL — 는 레이어를 만들지 않아 따로 나열합니다. 삭제는 OCI whiteout 관례로 읽습니다. .wh.name 항목은 아래 레이어의 name 을 지웁니다. 파일은 아래 레이어에 그대로 남아 있고 용량도 그대로 차지합니다.

사용 방법

  1. 이미지를 내보냅니다

    `docker save image:tag -o image.tar`이나 그에 해당하는 `podman save`를 씁니다. OCI 이미지 레이아웃도 됩니다.

  2. tar 파일을 놓습니다

    이 탭의 워커에서 파싱합니다. 아무것도 올리지 않습니다. 이미지 tar에는 파일시스템 전체가 들어 있으니 중요한 부분입니다.

  3. 큰 레이어를 펼칩니다

    줄마다 크기가 막대로, 대응하는 Dockerfile 단계가 함께 나옵니다. 펼치면 그 레이어가 추가한 큰 파일들이 나오고, 지운 것과 가린 것도 따로 나옵니다.

자주 묻는 질문

뒤쪽 RUN에서 지웠는데 왜 이미지가 그대로 큰가요?

삭제도 하나의 레이어이기 때문입니다. OCI whiteout 관례는 `.wh.name` 항목을 써서 아래 레이어의 `name`을 가릴 뿐입니다. 원래 파일은 그대로 있고, 그대로 배포되고, 그대로 용량을 차지합니다. 만든 것과 같은 `RUN` 안에서 지우거나 멀티 스테이지 빌드를 쓰세요.

어떤 Dockerfile 단계는 왜 레이어가 없나요?

ENV, CMD, LABEL, EXPOSE 같은 것들은 설정만 바꾸고 파일시스템은 건드리지 않습니다. 그래서 이미지 history가 `empty_layer`로 표시합니다. 여기서는 따로 나열해서, 실제로 용량을 쓰는 것과 레이어 번호가 어긋나지 않게 했습니다.

레지스트리에서 바로 열 수 있나요?

아니요. 로컬 tar만 읽습니다. 가져오려면 이 페이지가 레지스트리에 인증해야 하는데, 그건 위협 모델이 다른 별개의 도구입니다. `docker save` 한 번이면 됩니다.

여기 크기가 `docker images`와 다릅니다.

재는 대상이 다릅니다. `docker images`는 스토리지 드라이버가 공유 레이어를 중복 제거한 뒤의 디스크 크기이고, 여기는 내보낸 파일 안 각 레이어의 압축 전 내용 크기입니다. 둘 다 맞습니다. `docker pull`이 무엇을 옮기는지 알려 주는 쪽은 두 번째입니다.

이 도구로 이어지는 것

다음 단계

이 도구의 결과를 그대로 받을 수 있는 도구들입니다.