Pocker is a lightweight, Bash-based container manager designed to run Linux distributions in a rootless environment. By leveraging PRoot, it allows users to pull Docker-compatible images and run them without requiring sudo or kernel-level container support (like namespaces).
- Rootless: No
sudoor root privileges required. - Docker Compatible: Pulls and extracts standard OCI/Docker images.
- Persistent Containers: Create named container instances from images.
- Clean Isolation: Uses
PRootto guest-bind/dev,/proc, and/sys. - Simplified CLI: Easy commands for pulling, creating, and logging into containers.
Before running Pocker, ensure the following dependencies are installed on your host system:
git,curl,jq(For registry API interaction)proot(The core engine for rootless execution)tar,xz(For extracting image layers)
Choose the instruction set corresponding to your platform:
Open your terminal and run the following commands:
# 1. Update and Install Dependencies
sudo apt update && sudo apt install git curl jq proot tar xz-utils -y
# 2. Clone the Repository
git clone git@github.com:navetacandra/pocker.git
cd pocker
# 3. Set Executable Permissions
chmod +x pocker image_pullEnsure your packages are up to date and install the requirements:
# 1. Update and Install Dependencies
pkg update && pkg install git curl jq proot tar xz-utils -y
# 2. Clone the Repository
git clone git@github.com:navetacandra/pocker.git
cd pocker
# 3. Set Executable Permissions
chmod +x pocker image_pullDownload an image from a registry (defaults to Docker Hub).
./pocker pull debian:latestInitialize a specific instance (rootfs) from a pulled image.
./pocker create debian:latest my-containerEnter the container shell. Pocker will automatically detect bash, ash, or sh.
./pocker login my-container| Command | Description |
|---|---|
ls image |
List all downloaded images in cache. |
ls container |
List all created container instances. |
delete <image> |
Remove an image from the cache. |
delete-container <name> |
Wipe a container instance's rootfs. |
.cache/: Stores the compressed image layers and manifests..rootfs/: Contains the extracted filesystems for your named containers.
- Networking: Since this is rootless via PRoot, the container shares the host's network stack.
- Performance: PRoot uses
ptrace, which introduces some overhead compared to native Docker. - DNS: Pocker automatically injects
1.1.1.1into/etc/resolv.confto ensure internet connectivity within the guest.