Skip to content

diphyx/dockpod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

114 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“¦ dockpod

dockpod Docker Podman Compose

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.


πŸš€ Quick Start

curl -fsSL diphyx.github.io/dockpod/setup.sh | bash

Install a runtime

# Install Docker + Compose
dockpod install docker

# Install Podman + Compose
dockpod install podman

# Install both Docker and Podman + Compose
dockpod install both

πŸ€” Why dockpod?

No 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

✨ Features

  • πŸ—οΈ 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

πŸ–₯️ Supported Architectures

Architecture Target
x86_64 amd64
aarch64 arm64

πŸ“‹ Requirements

  • 🐧 Linux with kernel >= 4.18
  • πŸ”§ systemd
  • πŸ“‚ cgroups v2 (v1 supported with warnings)
  • πŸ”₯ iptables or nftables

πŸ‘€ Rootless Prerequisites

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-uidmap

dockpod automatically detects missing prerequisites during install and shows the exact commands to fix them.


πŸ’» Usage

dockpod <command> [runtime] [flags]

Commands

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

Flags

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

Examples

# 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 --offline

πŸ” Installation Modes

πŸ›‘οΈ Root

When 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

πŸ‘€ Rootless

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.sh for Docker and configures user-scoped systemd services with loginctl enable-linger.


🧩 What Gets Installed

🐳 Docker Stack

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

🦭 Podman Stack

The podman binary 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

πŸ”Œ Compose

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 a podman-compose symlink to docker-compose.


πŸ”€ Runtime Switching

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 docker

During installation, dockpod adds a shell wrapper function that automatically reloads environment variables after switching β€” no manual source ~/.bashrc needed.


✈️ Offline Installation

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 --offline

πŸ“„ License

MIT

About

Quick container runtime setup for Linux

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages