Docker Image Pull Tool
Pull and save Docker images as tar files — no Docker daemon required.
Sometimes you need Docker images but can't run docker pull — no daemon, restricted networks, air-gapped environments. dipt talks directly to container registries via go-containerregistry and saves images as standard tar files you can docker load anywhere.
- Interactive TUI — Powered by Bubble Tea, with real-time progress and log viewer
- Mirror Registries — Auto-detect, health-check, and fallback across multiple mirrors
- Multi-Platform — linux / windows / darwin × amd64 / arm64 / arm / 386
- Private Registries — Username/password auth with secure password input
- Smart Retry — Exponential backoff with jitter on transient failures
- Three-Tier Config — Environment variables > project config > user config
# Build
git clone <repo-url> && cd dipt
go build -o dipt ./cmd/dipt
# Launch TUI
./diptThe first run walks you through a setup wizard. After that, the main menu gives you three options:
| Menu | What it does |
|---|---|
| Pull Image | Enter image name, pick platform, download as .tar |
| Settings | Default OS, arch, save dir, registry credentials |
| Mirrors | Add, remove, test mirror registries |
| Key | Action |
|---|---|
↑↓ / jk |
Navigate |
Enter |
Confirm |
Tab / Shift+Tab |
Next / previous field |
←→ |
Cycle options |
Esc |
Back |
q / Ctrl+C |
Quit |
Auto-created by the setup wizard:
{
"default_os": "linux",
"default_arch": "amd64",
"default_save_dir": "./images",
"registry": {
"mirrors": ["https://mirror.example.com"],
"username": "",
"password": ""
}
}Optional override per project. Same schema, higher priority.
| Variable | Description |
|---|---|
DIPT_DEFAULT_OS |
Default OS |
DIPT_DEFAULT_ARCH |
Default architecture |
DIPT_DEFAULT_SAVE_DIR |
Default save directory |
DIPT_REGISTRY_MIRRORS |
Comma-separated mirror URLs |
DIPT_REGISTRY_USERNAME |
Registry username |
DIPT_REGISTRY_PASSWORD |
Registry password |
DIPT_CUSTOM_MIRROR |
Prepend a custom mirror |
DIPT_TIMEOUT |
Timeout in seconds (default 120) |
DIPT_NO_INTERACTIVE=1 |
Skip setup wizard |
DIPT_DRY_RUN=1 |
Dry-run mode |
Priority: env vars >
./config.json>~/.dipt_config