docker + podman, quick setup β Prebuilt container runtime binaries for Linux with an interactive installer.
Static builds of Docker, Podman, and Docker Compose β compiled from official sources, bundled into architecture-specific tarballs, and published to GitHub Releases.
curl -fsSL diphyx.github.io/dockpod/setup.sh | bash# Install Docker + Compose
dockpod install docker
# Install Podman + Compose
dockpod install podman
# Install both Docker and Podman + Compose
dockpod install bothNo repos. No dependencies. No distro-specific packages. Just static binaries from official sources.
- π No root access β HPC users, shared servers, or locked-down machines where you can't
sudo - π Restricted networks β environments behind firewalls that block distro repos but allow GitHub
βοΈ Offline / air-gapped β download one tarball, transfer via USB or scp, install without network- π No package manager β minimal containers, scratch VMs, or custom distros without apt/yum/dnf
- ποΈ Static prebuilt binaries from official upstream sources
- π³ Docker and Podman support with seamless switching
- π€ Root and rootless installation modes
- π― Interactive arrow-key menu for runtime selection
- βοΈ Automatic systemd service configuration
- π Docker Compose as both standalone binary and CLI plugin
- β Checksum verification for downloaded tarballs
- π¦ Offline installation from bundled tarballs
| Architecture | Target |
|---|---|
| x86_64 | amd64 |
| aarch64 | arm64 |
- π§ Linux with kernel >= 4.18
- π§ systemd
- π cgroups v2 (v1 supported with warnings)
- π₯ iptables or nftables
Rootless mode requires newuidmap/newgidmap and unprivileged user namespaces. An administrator must configure these before installing:
# Ubuntu / Debian (Ubuntu 23.10+ also needs userns fix)
sudo apt install uidmap
echo "kernel.apparmor_restrict_unprivileged_userns=0" | sudo tee /etc/sysctl.d/99-rootless.conf && sudo sysctl --system
# Fedora
sudo dnf install shadow-utils
# CentOS / RHEL / Rocky / Alma (RHEL 7 also needs userns fix)
sudo yum install shadow-utils
echo "kernel.unprivileged_userns_clone=1" | sudo tee /etc/sysctl.d/99-rootless.conf && sudo sysctl --system
# Arch / Manjaro
sudo pacman -S shadow
# openSUSE / SLES
sudo zypper install shadow
# Alpine
sudo apk add shadow-uidmapdockpod automatically detects missing prerequisites during install and shows the exact commands to fix them.
dockpod <command> [runtime] [flags]
| Command | Arguments | Description |
|---|---|---|
setup |
Install dockpod CLI only | |
install |
[docker|podman|both] |
Install container runtime |
uninstall |
[docker|podman|both] |
Remove runtime and configs |
update |
[docker|podman|both] |
Update to latest version |
start |
[docker|podman] |
Start runtime services |
stop |
[docker|podman] |
Stop runtime services |
restart |
[docker|podman] |
Restart runtime services |
switch |
<docker|podman> |
Switch active runtime |
test |
[docker|podman] |
Test runtime with containers |
status |
Show runtime status | |
info |
Show system and runtime details | |
help |
Show help |
| Flag | Description |
|---|---|
-y, --yes |
Auto-confirm all prompts |
--offline |
Use bundled binaries only (no download) |
--no-start |
Skip starting services after install/update |
--no-verify |
Skip verification after install/update |
-v, --version |
Show version |
-h, --help |
Show help |
# Install Docker with Compose (interactive)
dockpod install docker
# Install Podman non-interactively
dockpod install podman -y
# Install both Docker and Podman
dockpod install both
# Switch active runtime to Podman
dockpod switch podman
# Update all installed runtimes
dockpod update
# Run tests against installed runtimes
dockpod test
# Show current status
dockpod status
# Show detailed system and runtime info
dockpod info
# Offline install from extracted tarball
dockpod install docker --offlineWhen run as root (or with sudo), dockpod installs to:
| Path | Purpose |
|---|---|
/usr/local/bin/ |
Binaries |
/etc/docker/ |
Docker configuration |
/etc/containers/ |
Podman configuration |
/etc/systemd/system/ |
Systemd units |
/usr/local/lib/docker/cli-plugins/ |
Docker CLI plugins |
When run as a regular user, dockpod installs to:
| Path | Purpose |
|---|---|
~/.local/bin/ |
Binaries |
~/.config/docker/ |
Docker configuration |
~/.config/containers/ |
Podman configuration |
~/.config/systemd/user/ |
Systemd user units |
~/.docker/cli-plugins/ |
Docker CLI plugins |
Rootless mode uses
dockerd-rootless.shfor Docker and configures user-scoped systemd services withloginctl enable-linger.
| Binary | Source |
|---|---|
docker |
docker/cli |
dockerd |
moby/moby |
containerd |
containerd/containerd |
containerd-shim-runc-v2 |
containerd/containerd |
runc |
opencontainers/runc |
docker-proxy |
moby/moby |
docker-init |
krallin/tini |
rootlesskit |
rootless-containers/rootlesskit |
dockerd-rootless.sh |
moby/moby |
The
podmanbinary is built as a statically linked binary with the API service included, managed via systemd socket activation.
| Binary | Source |
|---|---|
podman |
containers/podman |
crun |
containers/crun |
conmon |
containers/conmon |
netavark |
containers/netavark |
aardvark-dns |
containers/aardvark-dns |
slirp4netns |
rootless-containers/slirp4netns |
fuse-overlayfs |
containers/fuse-overlayfs |
| Binary | Source |
|---|---|
docker-compose |
docker/compose |
Installed as a standalone binary and as a Docker CLI plugin (
docker compose). Works with both Docker and Podman β when Podman is installed, dockpod automatically creates apodman-composesymlink todocker-compose.
When both Docker and Podman are installed, dockpod switch changes the DOCKER_HOST environment variable to point to the selected runtime's socket:
# Switch to Podman
dockpod switch podman
# Switch back to Docker
dockpod switch dockerDuring installation, dockpod adds a shell wrapper function that automatically reloads environment variables after switching β no manual
source ~/.bashrcneeded.
Download a release tarball, extract it, and run dockpod with --offline:
# Extract the tarball
tar -xzf dockpod-v1.0.0-amd64.tar.gz
cd dockpod-v1.0.0-amd64
# Install using bundled binaries
./dockpod.sh install docker --offlineMIT