unregistry とは
unregistry は Pasha Sviderski が作った軽量なコンテナイメージレジストリです。イメージを Docker デーモンのストレージから直接保存・配信します。同梱の docker pussh コマンドを使えば、SSH 越しにリモートの Docker サーバーへイメージを直接 push でき、足りないレイヤだけを転送するので効率的です。
- Docker Hub / GHCR: コードを公開するか、プライベートリポジトリに課金するか
- レジストリのセルフホスト: 保守も、セキュリティも、費用も、また一つ増えます
- save / load: サーバーに 90% 存在していても、イメージ全体を転送してしまいます
- リモートで再ビルド: 時間もサーバー資源も浪費し、本番ビルドのデバッグをすることに
docker pussh myapp:latest user@server、これだけです。レジストリの用意も、サブスクリプションも、中間ストレージも不要で、足りないレイヤだけが SSH で直接届きます。
⚡ unregistry の主な機能
🚀 直接転送
SSH 越しにイメージをリモートサーバーへ直接 push できます。中継レジストリも、開けたポートも不要。効率的な 1 対 1 の転送だけです。
📦 レイヤの重複排除
Docker イメージ版の rsync のように、足りないレイヤだけを転送します。イメージの 90% が向こうにあるなら、転送されるのは残りの 10% だけです。
🔒 安全な設計
認証と転送に SSH を使います。レジストリ用のポートを開ける必要も、追加のセキュリティ設定も要りません。
⚡ セットアップ不要
維持すべきレジストリの基盤がありません。Docker と SSH が使えるサーバーなら、どこでも動きます。
🏗️ CI/CD にすぐ使える
デプロイのパイプラインに最適。ローカルでも CI でもビルドし、レジストリの手間なく本番サーバーへ直接送れます。
🌐 マルチプラットフォーム
containerd のイメージストアにより、マルチプラットフォームのイメージに対応。ARM と x86 のイメージを効率よくデプロイできます。
apt upgrade を実行するだけで、常に最新版を使い続けられます。
📦 deb.griffo.io からインストールする
ステップ 1: リポジトリを追加する
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo apt update🆓 ずっと無料のミラーがあります。 deb-free.griffo.io は、アカウントもサブスクリプションもなしでパッケージをずっと無料で配布しています。上流より最大2か月遅れ、セキュリティ修正は即座に公開されます。現在収録しているのは cliamp、Ghostty、lazydocker、Oh My Posh と Zed です。Unregistry は含まれていないため、今日入手する方法は上のリポジトリだけですが、ご要望があれば追加できます。
🧩 extrepo オプションについて。 extrepo は外部リポジトリを扱う Debian 標準のツールです。署名済みメタデータと照合して鍵を検証したうえで、sources ファイルの作成と署名鍵のインストールを代わりに行います。このリポジトリは griffo、ずっと無料のミラーは griffo-free という名前で登録されているので、Debian(bookworm、trixie、forky、sid)では上のコマンドだけで設定は完了です。
extrepo が用意するのは sources ファイルと鍵だけなので、サブスクリプションの認証情報は引き続き /etc/apt/auth.conf.d/deb.griffo.io.conf に書きます。extrepo は Debian のスイート向けメタデータしか公開していないため Ubuntu は対象外です。Ubuntu では sudo または root のコマンドを使ってください。
ステップ 2: unregistry をインストールする
# unregistry と docker-pussh をインストール
sudo apt install unregistry docker-pussh
# インストールを確認
docker pussh --version# unregistry と docker-pussh をインストール
apt install unregistry docker-pussh
# インストールを確認
docker pussh --version🎯 基本的な使い方
シンプルなイメージの push:
# ローカルでイメージをビルド
docker build -t myapp:latest .
# リモートサーバーへ直接 push
docker pussh myapp:latest user@server.example.com
# これだけです。イメージはもうリモートサーバーにあります応用的な使い方:
# SSH 鍵を使って push
docker pussh myapp:latest ubuntu@192.168.1.100 -i ~/.ssh/id_rsa
# SSH ポートを指定
docker pussh myapp:latest user@server:2222
# マルチアーキテクチャのイメージで、特定のプラットフォームを指定
docker pussh myapp:latest user@server --platform linux/amd64
# デプロイスクリプトの中で使う
docker pussh myapp:$VERSION deploy@prod-server
ssh deploy@prod-server docker run -d myapp:$VERSIONCI/CD への組み込み:
# GitHub Actions の例
- name: Build and deploy
run: |
docker build -t myapp:${{ github.sha }} .
docker pussh myapp:${{ github.sha }} deploy@staging-server🚀 deb.griffo.io を選ぶ理由
- 公式 Debian: 公式リポジトリには存在しません
- 手動スクリプト: 更新も依存の管理も手動
- Homebrew: 使えるプラットフォームが限られます
- deb.griffo.io: 最新版を自動更新でお届け
- ✅ 最新の機能: Docker と SSH 連携の最新の改善が手に入ります
- ✅ 全部入り: unregistry と docker-pussh の両方を同梱
- ✅ 自動更新: 上流のリリースから数時間以内にパッケージを更新
- ✅ 正しく統合: Docker CLI プラグインとして正しく設定されます
- ✅ マルチディストリビューション: Bookworm、Trixie、Sid で動作
- ✅ 手間のかからない運用: 更新は通常の apt コマンドだけ
📦 パッケージのビルドリポジトリ
Debian パッケージは、この GitHub リポジトリで自動的にビルド・管理されています:
- 📠 unregistry-debian - 最新リリースのビルド
- 📡 docker-pussh-debian - 最新リリースのビルド
🔗 関連パッケージ
deb.griffo.io では、こちらも配布しています:
- lazydocker - Docker 管理のためのターミナル UI
- uncloud - 複数サーバーへのコンテナデプロイ
- fzf ファジーファインダー - コマンド検索を強化