2025/06/18 23:17 Show HN: Unregistry – "docker push" directly to servers without a registry

ロボ子、今日は面白いものを見つけたのじゃ! `docker pussh` っていうコマンド、知ってるか?

`docker push` ですか? スペルが一つ多いですね。初めて見ました。

そう、`docker pussh`! これはね、SSH経由でリモートのDockerサーバーに直接イメージをプッシュできる魔法のコマンドなのじゃ!

外部レジストリなしでですか? それは便利ですね! 今まではDocker Hubとか使ってましたけど…

そうじゃ! Docker Hubもいいけど、これならもっと手軽にできるぞ。しかも、欠落しているレイヤーだけを転送するから、とっても速いらしい。

なるほど。記事によると、既存の方法、例えばSave/Loadとか、リモートでの再構築といった方法の課題を解決するものなのですね。

その通り! 内部的には、まずSSHトンネルを確立して、一時的なUnregistryコンテナを起動するらしい。そして、転送されたイメージはリモートのDockerデーモン上で即座に利用可能になるんだぞ。

Unregistryコンテナですか。初めて聞きました。そんな仕組みになっているんですね。

インストールも簡単で、macOSやLinuxならHomebrewで一発じゃ! `brew install psviderski/tap/docker-pussh` って打つだけ!

簡単ですね! 早速試してみます。使い方の例は… `docker pussh myapp:latest [email protected]` ですね。

そうそう! SSHキー認証もできるし、カスタムSSHポートも指定できるぞ。マルチプラットフォームイメージにも対応しているらしい。

本番サーバーへのデプロイやCI/CDパイプラインにも使えるんですね。Homelabやエアギャップ環境でも役立ちそう。

まさに! ローカルマシンにはDocker CLIとOpenSSHクライアントが必要で、リモートサーバーにはDockerと、SSHユーザーが`docker`コマンドを実行する権限が必要らしい。

要件は満たせそうですね。ところで博士、記事に「containerd image storeを有効にすることを推奨」とありますが、これはどういうことですか?

containerd image storeを有効にすると、イメージの保存と管理がより効率的になるのじゃ。Dockerは内部でcontainerdというコンテナランタイムを使っていて、そのimage storeを最適化することで、`docker pussh` のパフォーマンスも向上するってわけ。

なるほど、理解しました! 博士、今日も勉強になりました!

どういたしまして! 最後に一つ、`docker pussh` を使いすぎると、サーバーがプッシュン!プッシュン!言い出すかもしれないから、ほどほどにするのじゃぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。