4,737
// 概要
Unregistry は、外部の registry を必要とせずに Docker image をリモートサーバーへ直接転送できる軽量なツールです。SSH トンネルを活用することで、不足している image layer のみを効率的に宛先ホストへ push します。このアプローチにより、中間ストレージや複雑な registry 設定が不要となり、デプロイワークフローが簡素化されます。
// 技術解説
Unregistry は、ローカルマシンとリモートサーバー間で SSH を介した直接的なピアツーピア転送を可能にすることで、コンテナイメージの配布を簡素化するために設計された軽量ツールです。外部レジストリや複雑なセルフホスト型インフラストラクチャを必要としないため、レイヤーベースの差分転送によって帯域幅を最適化しつつ、イメージ移動の摩擦を解消します。このプロジェクトは containerd イメージストアをバックエンドとして活用しており、従来の「save/load」ワークフローやパブリックレジストリへの依存に代わる非常に効率的な手段を提供します。
// 主要ハイライト
01
SSH を介してリモートサーバーへ直接イメージをプッシュできるため、外部レジストリやセルフホスト型レジストリが不要です。
02
Docker イメージ版の rsync のように機能し、不足しているレイヤーのみを送信することで転送速度を最適化します。
03
Docker CLI にプラグインとしてシームレスに統合されており、ユーザーは「docker pussh」コマンドを実行できます。
04
標準的な SSH 鍵やカスタム SSH 設定ファイルを使用した、安全で認証されたデプロイをサポートします。
05
containerd イメージストアを利用することでストレージのオーバーヘッドを削減し、Docker が重複なしで直接イメージを共有できるようにします。
06
パブリックレジストリへのアクセスが制限されている、または利用できないエアギャップ環境や隔離された環境でのデプロイを容易にします。
// ユースケース
01
ローカルの開発環境から本番サーバーへ container image を直接デプロイする
02
デプロイターゲットへ直接 image を push することで CI/CD パイプラインを効率化する
03
隔離された homelab や air-gapped なネットワーク環境内で container image を配布する
// クイックスタート
開始するには、Homebrew を使用するか、バイナリを直接 ~/.docker/cli-plugins ディレクトリにダウンロードしてプラグインをインストールします。インストールが完了したら、リモートサーバーで Docker と SSH アクセスが設定されていることを確認し、「docker pussh <image_name> <user@server>」を実行してイメージを転送します。「docker pussh --help」を実行することで、インストールの確認や利用可能なオプションの表示が可能です。