|
1 | 1 | <div align="center">
|
2 | 2 | <img src=".github/images/logo-light.svg#gh-light-mode-only" alt="Unregistry logo"/>
|
3 | 3 | <img src=".github/images/logo-dark.svg#gh-dark-mode-only" alt="Unregistry logo"/>
|
4 |
| - <p><strong>docker push without registry</strong></p> |
| 4 | + <p><strong>▸ Push docker images directly to remote servers without a registry ◂</strong></p> |
| 5 | + |
| 6 | + <p> |
| 7 | + <a href="https://discord.gg/eR35KQJhPu"><img src="https://img.shields.io/badge/discord-5865F2.svg?style=for-the-badge&logo=discord&logoColor=white" alt="Join Discord"></a> |
| 8 | + <a href="https://x.com/psviderski"><img src="https://img.shields.io/badge/follow-black?style=for-the-badge&logo=X&logoColor=while" alt="Follow on X"></a> |
| 9 | + </p> |
5 | 10 | </div>
|
6 |
| ---- |
7 |
| -<p> |
8 |
| - <a href="https://discord.gg/eR35KQJhPu"><img src="https://img.shields.io/badge/discord-5865F2.svg?style=for-the-badge&logo=discord&logoColor=white" alt="Join Discord"></a> |
9 |
| - <a href="https://x.com/psviderski"><img src="https://img.shields.io/badge/follow-black?style=for-the-badge&logo=X&logoColor=while" alt="Follow on X"></a> |
10 |
| -</p> |
11 | 11 |
|
12 |
| -'docker push' over SSH without registry |
| 12 | +**Unregistry** is a lightweight container image registry that serves images directly from your Docker/containerd |
| 13 | +daemon's storage. |
| 14 | + |
| 15 | +The included `docker pussh` command allows you to push an image straight to a remote Docker daemon via SSH. It starts |
| 16 | +a temporary unregistry container on the remote host to transfer only the missing image layers. Your image transfers |
| 17 | +directly to where you need to run it, without going through an external registry. |
13 | 18 |
|
14 | 19 | https://github.com/user-attachments/assets/9d704b87-8e0d-4c8a-9544-17d4c63bd050
|
| 20 | + |
| 21 | +## Why unregistry? |
| 22 | + |
| 23 | +You've built a Docker image locally. Now you need it on your server. Your options suck: |
| 24 | + |
| 25 | +- **Docker Hub / GitHub Container Registry** - Your code is now public, or you're paying for private repos |
| 26 | +- **Self-hosted registry** - Another service to maintain, secure, and pay for storage |
| 27 | +- **Save/Load** - `docker save | ssh | docker load` is slow and inefficient, especially for large images |
| 28 | +- **Rebuild remotely** - Wastes time and server resources. Who builds images on production servers? |
| 29 | + |
| 30 | +You just want to move an image from A to B. Why is this so hard? |
| 31 | + |
| 32 | +**That's why we built unregistry.** One command replaces the entire workflow: |
| 33 | + |
| 34 | +```bash |
| 35 | +docker pussh myapp:latest user@server |
| 36 | +``` |
| 37 | + |
| 38 | +Your image is now on the remote server. No registry account, no subscription, no intermediate storage, no open ports to |
| 39 | +the world. Just a **direct transfer** of the **missing image layers** over SSH. |
| 40 | + |
| 41 | +> [!NOTE] |
| 42 | +> Unregistry was originally created for [Uncloud](https://github.com/psviderski/uncloud), a lightweight tool for |
| 43 | +> deploying and managing containerised applications across a network of Docker hosts. We needed a simple way to upload |
| 44 | +> locally built images to remote machines without requiring a registry. And realised this problem deserves its own |
| 45 | +> solution. |
| 46 | +
|
| 47 | + |
| 48 | +<div align="center"> |
| 49 | + Built with ❤️ by <a href="https://github.com/psviderski">Pasha Sviderski</a> who just wanted to deploy his images |
| 50 | +</div> |
0 commit comments