HubLensDockerpsviderski/unregistry
psviderski

unregistry

DevOps#Docker#SSH#Deployment#Containerization
View on GitHub
4,737

// summary

Unregistry is a lightweight tool that enables the direct transfer of Docker images to remote servers without requiring an external registry. By utilizing SSH tunnels, it efficiently pushes only the missing image layers to the destination host. This approach simplifies deployment workflows by eliminating the need for intermediate storage or complex registry configurations.

// technical analysis

Unregistry is a lightweight tool designed to simplify container image distribution by enabling direct peer-to-peer transfers between a local machine and a remote server over SSH. By bypassing the need for external registries or complex self-hosted infrastructure, it solves the friction of moving images while optimizing bandwidth through layer-based delta transfers. The project leverages the containerd image store as a backend, offering a highly efficient alternative to traditional 'save/load' workflows or public registry dependencies.

// key highlights

01
Enables direct image pushing to remote servers over SSH, eliminating the need for external or self-hosted registries.
02
Optimizes transfer speeds by only sending missing layers, functioning similarly to rsync for Docker images.
03
Integrates seamlessly into the Docker CLI as a plugin, allowing users to execute commands via 'docker pussh'.
04
Supports secure, authenticated deployments using standard SSH keys and custom SSH configuration files.
05
Reduces storage overhead by utilizing the containerd image store, which allows Docker to share images directly without duplication.
06
Facilitates deployment in air-gapped or isolated environments where public registry access is restricted or unavailable.

// use cases

01
Deploying container images directly to production servers from local development environments
02
Streamlining CI/CD pipelines by pushing images straight to deployment targets
03
Distributing container images within isolated homelab or air-gapped network environments

// getting started

To begin, install the plugin via Homebrew or by downloading the binary directly into your ~/.docker/cli-plugins directory. Once installed, ensure your remote server has Docker and SSH access configured, then execute 'docker pussh <image_name> <user@server>' to transfer your image. You can verify the installation and view available options by running 'docker pussh --help'.