Skip the Registry: Push Docker Images Directly to Your Servers
If you’ve ever deployed a Docker image, you know the usual drill: build, tag, push to a registry (like Docker Hub, ECR, or GCR), then pull on the server. It works, but it adds steps, costs, and sometimes complexity. What if you could just push an image straight to your remote server, no registry in the middle?
That’s exactly what unregistry does. It’s a clever little tool that bypasses the traditional registry workflow, letting you send a Docker image directly over SSH to a remote machine. It’s perfect for quick deployments, local development syncs, or environments where setting up a full registry feels like overkill.
What It Does
Unregistry is a CLI tool that takes a local Docker image, streams it over an SSH connection, and loads it directly onto a remote Docker daemon. No intermediate registry is needed. You run a command on your local machine, and moments later, the image is ready to run on your server.
Why It’s Cool
The magic here is in the simplicity and the clever use of existing tools. Unregistry doesn’t run a persistent service on your server. Instead, it uses docker save to create an image tarball, pipes it over SSH, and uses docker load on the other side to ingest it. This approach has some neat benefits:
- No Registry Required: You don’t need to set up, configure, or pay for a private registry. This is huge for small projects, prototypes, or air-gapped environments.
- It’s Fast for Iteration: When you’re actively developing and testing on a remote staging server, pushing directly can be faster than the build-push-pull cycle.
- Works with Existing SSH Security: It leverages your already-configured SSH keys and access controls. If you can SSH to the server, you can push an image to it.
- Single-Command Simplicity: The entire process is wrapped in one clean command:
unregistry push.
How to Try It
Getting started is straightforward. Unregistry is a Go binary, so you can install it directly.
Install it: Grab the latest binary from the GitHub Releases page, or use Go to install it:
go install github.com/psviderski/unregistry@latestMake sure your
$GOPATH/bin(usually~/go/bin) is in your PATH.