Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dive — 도커 이미지의 각 레이어를 탐색하는 도구 | Kitploit
도구/GitHubGitHub/wagoodman/dive
General Purpose UtilitiesContainer Security
GitHubwagoodman/dive

dive

도커 이미지의 각 레이어를 탐색하는 도구

저장소 보기
54.4k2.0k1년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

dive

GitHub release Validations Go Report Card License: MIT Donate

Docker 이미지, 레이어 콘텐츠를 탐색하고 Docker/OCI 이미지 크기를 줄이는 방법을 발견하는 도구입니다.

Image

Docker 이미지를 분석하려면 이미지 태그/ID/다이제스트와 함께 dive를 실행하기만 하면 됩니다:

root@kitploit:~
dive <your-image-tag>

또는 Docker를 통해 직접 dive를 실행할 수 있습니다:

root@kitploit:~
alias dive="docker run -ti --rm  -v /var/run/docker.sock:/var/run/docker.sock docker.io/wagoodman/dive"
dive <your-image-tag>

# 예시
dive nginx:latest

또는 이미지를 빌드한 후 바로 분석으로 넘어가고 싶다면:

root@kitploit:~
dive build -t <some-tag> .

macOS에서 빌드하기 (Docker 컨테이너 엔진만 지원):

root@kitploit:~
docker run --rm -it \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v  "$(pwd)":"$(pwd)" \
      -w "$(pwd)" \
      -v "$HOME/.dive.yaml":"$HOME/.dive.yaml" \
      docker.io/wagoodman/dive:latest build -t <some-tag> .

또한 CI 파이프라인에서 이 도구를 실행하여 낭비되는 공간을 최소화할 수 있습니다 (UI는 생략됨):

root@kitploit:~
CI=true dive <your-image>

Image

베타 품질입니다! 새로운 기능을 원하거나 버그를 발견하면 이슈를 제출해 주세요 :)

기본 기능

레이어별로 분할된 Docker 이미지 콘텐츠 표시

왼쪽에서 레이어를 선택하면 오른쪽에 해당 레이어와 이전 모든 레이어의 결합된 콘텐츠가 표시됩니다. 또한 화살표 키로 파일 트리를 자유롭게 탐색할 수 있습니다.

각 레이어의 변경 사항 표시

변경, 수정, 추가 또는 제거된 파일이 파일 트리에 표시됩니다. 특정 레이어의 변경 사항만 표시하거나 이 레이어까지의 누적 변경 사항을 표시하도록 조정할 수 있습니다.

"이미지 효율성" 추정

왼쪽 아래 창에는 기본 레이어 정보와 이미지에 포함된 낭비 공간을 추정하는 실험적 메트릭이 표시됩니다. 이는 레이어 간 파일 중복, 레이어 간 파일 이동, 또는 파일이 완전히 제거되지 않은 경우에서 발생할 수 있습니다. 백분율 "점수"와 총 낭비된 파일 공간이 제공됩니다.

빠른 빌드/분석 사이클

하나의 명령으로 Docker 이미지를 빌드하고 즉시 분석할 수 있습니다: dive build -t some-tag .

docker build 명령어를 동일한 dive build 명령어로 대체하기만 하면 됩니다.

CI 통합

이미지를 분석하고 이미지 효율성 및 낭비 공간에 기반하여 합격/불합격 결과를 얻습니다. 환경 변수 CI=true를 설정한 상태에서 유효한 dive 명령어를 실행하기만 하면 됩니다.

여러 이미지 소스 및 컨테이너 엔진 지원

--source 옵션을 사용하여 컨테이너 이미지를 가져올 위치를 선택할 수 있습니다:

root@kitploit:~
dive <your-image> --source <source>

또는

root@kitploit:~
dive <source>://<your-image>

유효한 source 옵션은 다음과 같습니다:

  • docker: Docker 엔진 (기본 옵션)
  • docker-archive: 디스크의 Docker Tar 아카이브
  • podman: Podman 엔진 (Linux 전용)

설치

Ubuntu/Debian

deb 파일 사용:

root@kitploit:~
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -fOL "https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb"
sudo apt install ./dive_${DIVE_VERSION}_linux_amd64.deb

snap 사용:

root@kitploit:~
sudo snap install docker
sudo snap install dive
sudo snap connect dive:docker-executables docker:docker-executables
sudo snap connect dive:docker-daemon docker:docker-daemon

[!CAUTION] Snap 방식은 apt-get으로 Docker를 설치한 경우 권장되지 않습니다. 기존 Docker 데몬이 손상될 수 있습니다.

참조: https://github.com/wagoodman/dive/issues/546

RHEL/Centos

root@kitploit:~
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -fOL "https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.rpm"
rpm -i dive_${DIVE_VERSION}_linux_amd64.rpm

Arch Linux

extra 저장소에서 사용 가능하며 pacman을 통해 설치할 수 있습니다:

root@kitploit:~
pacman -S dive

Mac

Homebrew를 사용하는 경우:

root@kitploit:~
brew install dive

MacPorts를 사용하는 경우:

root@kitploit:~
sudo port install dive

또는 릴리스 페이지에서 최신 Darwin 빌드를 다운로드하세요.

Windows

Chocolatey를 사용하는 경우:

root@kitploit:~
choco install dive

scoop을 사용하는 경우:

root@kitploit:~
scoop install main/dive

winget을 사용하는 경우:

root@kitploit:~
winget install --id wagoodman.dive

또는 릴리스 페이지에서 최신 Windows 빌드를 다운로드하세요.

Go 도구 Go 버전 1.10 이상이 필요합니다.

root@kitploit:~
go install github.com/wagoodman/dive@latest

참고: 이 방식으로 설치하면 dive -v 실행 시 올바른 버전이 표시되지 않습니다.

Nix/NixOS

NixOS에서:

root@kitploit:~
nix-env -iA nixos.dive

NixOS가 아닌 시스템(Linux, Mac)에서:

root@kitploit:~
nix-env -iA nixpkgs.dive

X-CMD

x-cmd는 Posix Shell용 도구 상자로, 셸과 awk를 사용하여 구축된 경량 패키지 관리자를 제공합니다.

root@kitploit:~
x env use dive

Docker

root@kitploit:~
docker pull docker.io/wagoodman/dive
# 또는
docker pull ghcr.io/wagoodman/dive

실행 시 Docker 소켓 파일을 포함해야 합니다:

root@kitploit:~
docker run --rm -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    docker.io/wagoodman/dive:latest <dive arguments...>

Windows용 Docker (PowerShell 호환 줄 바꿈 표시; 명령 프롬프트 호환성을 위해 한 줄로 축소)

root@kitploit:~
docker run --rm -it `
    -v /var/run/docker.sock:/var/run/docker.sock `
    docker.io/wagoodman/dive:latest <dive arguments...>

참고: 로컬에서 실행 중인 Docker 버전에 따라 Docker API 버전을 환경 변수로 지정해야 할 수 있습니다:

root@kitploit:~
   DOCKER_API_VERSION=1.37 dive ...

또는 Docker 이미지로 실행하는 경우:

root@kitploit:~
docker run --rm -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e DOCKER_API_VERSION=1.37 \
    docker.io/wagoodman/dive:latest <dive arguments...>

대체 런타임(Colima 등)을 사용하는 경우, 로컬 이미지를 가져오기 위해 Docker 호스트를 환경 변수로 지정해야 할 수 있습니다:

root@kitploit:~
   export DOCKER_HOST=$(docker context inspect -f '{{ .Endpoints.docker.Host }}')

CI 통합

환경 변수 CI=true로 dive를 실행하면 dive UI가 생략되고 Docker 이미지를 분석하여 반환 코드를 통해 합격/불합격 여부를 알려줍니다. 현재 저장소 루트에 배치할 수 있는 .dive-ci 파일을 통해 세 가지 메트릭이 지원됩니다:

root@kitploit:~
rules:
  # 효율성이 X% 미만으로 측정되면 실패로 표시합니다.
  # 0-1 사이의 비율로 표현됩니다.
  lowestEfficiency: 0.95

  # 낭비된 공간의 양이 X 이상이거나 X보다 크면 실패로 표시합니다.
  # B, KB, MB, GB로 표현됩니다.
  highestWastedBytes: 20MB

  # 낭비된 공간이 이미지의 X% 이상을 차지하면 실패로 표시합니다.
  # 참고: 기본 이미지 레이어는 전체 이미지 크기에 포함되지 않습니다.
  # 0-1 사이의 비율로 표현됩니다. 임계값에 도달하거나 초과하면 실패합니다.
  highestUserWastedPercent: 0.20

--ci-config 옵션으로 CI 구성 파일 경로를 재정의할 수 있습니다.

키 바인딩

UI 구성

별도 구성이 필요하지 않지만, 구성 파일을 생성하여 값을 재정의할 수 있습니다:

root@kitploit:~
# 지원 옵션은 "docker"와 "podman"입니다.
container-engine: docker
# 이미지 아카이브를 구문 분석하는 중 오류가 발생해도 분석을 계속합니다.
ignore-errors: false
log:
  enabled: true
  path: ./dive.log
  level: info

# 참고: 여러 바인딩을 쉼표로 구분하여 지정할 수 있습니다.
# 참고: UI 힌트는 첫 번째 바인딩에서 가져옵니다.
keybinding:
  # 전역 바인딩
  quit: ctrl+c
  toggle-view: tab
  filter-files: ctrl+f, ctrl+slash
  close-filter-files: esc
  up: up,k
  down: down,j
  left: left,h
  right: right,l

  # 레이어 보기 전용 바인딩
  compare-all: ctrl+a
  compare-layer: ctrl+l

  # 파일 보기 전용 바인딩
  toggle-collapse-dir: space
  toggle-collapse-all-dir: ctrl+space
  toggle-added-files: ctrl+a
  toggle-removed-files: ctrl+r
  toggle-modified-files: ctrl+m
  toggle-unmodified-files: ctrl+u
  toggle-filetree-attributes: ctrl+b
  page-up: pgup,u
  page-down: pgdn,d

diff:
  # 파일 트리(오른쪽 창)에 표시할 기본 파일을 변경할 수 있습니다. 모든 diff 유형이 기본적으로 표시됩니다.
  hide:
    - added
    - removed
    - modified
    - unmodified

filetree:
  # 기본 디렉터리 접힘 상태
  collapse-dir: false

  # 파일 트리가 화면에서 차지하는 너비 비율 (0보다 크고 1보다 작아야 함)
  pane-width: 0.5

  # 파일 트리 옆에 파일 속성 표시
  show-attributes: true

layer:
  # 이 레이어와 이전 모든 레이어의 모든 변경 사항을 표시합니다.
  show-aggregated-changes: false

dive는 다음 위치에서 구성을 검색합니다:

  • $XDG_CONFIG_HOME/dive/*.yaml
  • $XDG_CONFIG_DIRS/dive/*.yaml
  • ~/.config/dive/*.yaml
  • ~/.dive.yaml

원하는 경우 .yml을 .yaml 대신 사용할 수 있습니다.

도구 다운로드
키 바인딩설명
Ctrl + C 또는 Q종료
Tab레이어 보기와 파일 트리 보기 간 전환
Ctrl + F파일 필터링
ESC파일 필터 닫기
PageUp 또는 U한 페이지 위로 스크롤
PageDown 또는 D한 페이지 아래로 스크롤
위 또는 K페이지 내에서 한 줄 위로 이동
아래 또는 J페이지 내에서 한 줄 아래로 이동
Ctrl + A레이어 보기: 누적된 이미지 수정 사항 보기
Ctrl + L레이어 보기: 현재 레이어 수정 사항 보기
Space파일 트리 보기: 디렉터리 접기/펼치기
Ctrl + Space파일 트리 보기: 모든 디렉터리 접기/펼치기
Ctrl + A파일 트리 보기: 추가된 파일 표시/숨기기
Ctrl + R파일 트리 보기: 제거된 파일 표시/숨기기
Ctrl + M파일 트리 보기: 수정된 파일 표시/숨기기
Ctrl + U파일 트리 보기: 수정되지 않은 파일 표시/숨기기
Ctrl + B파일 트리 보기: 파일 속성 표시/숨기기
PageUp 또는 U파일 트리 보기: 한 페이지 위로 스크롤
PageDown 또는 D파일 트리 보기: 한 페이지 아래로 스크롤