Skip to content
/ sou Public

A tool for exploring files in container image layers

License

Notifications You must be signed in to change notification settings

knqyf263/sou

sou

A modern TUI tool for exploring container image layers with an intuitive interface.

The name "sou" comes from the Japanese word "ε±€" (そう/sō) which means "layer". It can be pronounced as "so".

Demo

Features

  • πŸš€ Interactive TUI for seamless navigation through container images
  • πŸ” Explore files within each layer using a built-in file picker
  • πŸ‘€ Quick preview of file contents within layers
  • πŸ’Ύ Easy export of files from layers to your local filesystem
  • πŸ“„ View image manifests and configurations
  • πŸ“¦ Support for both local and remote container images

Note

πŸ€– This project is experimentally developed entirely with Claude 3.5 Sonnet, exploring the possibilities of AI-assisted development.

Installation

Using Homebrew

brew install knqyf263/sou/sou

Using Container Image

docker run --rm -it ghcr.io/knqyf263/sou:latest nginx:latest

Using Go

go install github.com/knqyf263/sou@latest

From Source

git clone https://github.com/knqyf263/sou.git
cd sou
go build -o sou

Usage

sou <image-name>

Example:

# Local image
sou nginx:latest

# Remote image
sou ghcr.io/knqyf263/my-image:latest

Key Bindings

Layer View

  • ↑/k: Move cursor up
  • ↓/j: Move cursor down
  • β†’/l: View layer contents
  • g: Go to first item
  • G: Go to last item
  • K/pgup: Page up
  • J/pgdown: Page down
  • yy: Copy layer diff ID
  • /: Filter layers
  • ?: Toggle help
  • q: Quit

File View

  • ↑/k: Move cursor up
  • ↓/j: Move cursor down
  • ←/h: Go back
  • β†’/l: View/open file
  • .: Toggle hidden files
  • x: Export file
  • /: Filter files
  • ?: Toggle help
  • q: Quit

File Content View

  • ↑/k: Scroll up
  • ↓/j: Scroll down
  • ←/h: Go back to file list
  • q: Quit

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

Apache License 2.0 - see LICENSE for more details.