dockerc - Dockerイメージをスタンドアロンのポータブルバイナリにコンパイルするツール
(github.com/NilsIrl)- Dockerイメージを独立実行型のポータブルなバイナリにコンパイルするツール
- ユーザーに
docker run、pip install、npm iなどのコマンドなしで実行可能なバイナリを提供可能
特徴
- Dockerイメージを移植可能なバイナリにコンパイル。
- root権限が不要なコンテナ。
- macOSとWindowsをサポート予定(QEMUを使用)
- x86_64をサポート(arm64は対応予定)
- 引数をサポート
-eを使った環境変数指定をサポート。-vを使ったボリューム指定をサポート。
使い方
- 最新リリースからdockercをインストール。
- Docker Hubのイメージ、またはローカルDockerデーモンストレージのイメージを使って出力バイナリを生成。
- 生成されたバイナリは通常のバイナリのように呼び出し可能。
-eと-vオプションをdocker run使用時と同じ方法で指定可能。- コンテナ内で実行されるネットワークサービスに直接アクセス可能で、
-pの指定は不要。 - イメージの読み込みにはSkopeoを使用。その他の場所については該当ドキュメントを参照。
GN⁺の意見
- dockercはDockerの使い勝手を大きく向上させる可能性があるツールで、複雑なインストール手順なしにアプリケーションを実行できるようにする。これは特に非技術者にとって非常に有用となり得る。
- Dockerイメージをバイナリにコンパイルする機能は配布とデプロイを簡素化し、開発者やシステム管理者に時間の節約と効率性をもたらす。
- ただし、この技術が広く採用されるには、セキュリティ、性能、互換性に関する問題が十分に解決される必要がある。たとえば、コンパイルされたバイナリが元のDockerイメージと同程度に安全か、あらゆるシステムで円滑に動作するかといった検証が必要。
- Dockerと似た機能を提供する別のプロジェクトとしてPodmanがあり、これはroot権限なしでコンテナを実行できる機能を提供する。
- dockercを導入する際には、既存のDockerワークフローとの統合、イメージの更新および管理方法、そしてコンパイルされたバイナリのサイズや性能などを考慮する必要がある。この技術を選ぶことで得られる利点は、配布の簡素化と使いやすさだが、一方でコンパイル過程で発生し得るオーバーヘッドや潜在的な互換性問題を慎重に考慮すべきである。
2件のコメント
おお、かなり興味深いですね。
Hacker Newsの意見
これは本当にすごい。
以前、私は nix-bundle¹ やその公式対応版である
nix bundle² を使って勧めていた。nix bundleは巨大な実行ファイルだけでなく、Docker イメージ、AppImage、そしていくつかの別形式のイメージ/実行ファイルも作成できる。内蔵 OS 付きのポータブル実行ファイルに戻るのは本当に良い。
あるユーザーは、人々がこうしたものを動かす Docker コンテナを生成する Dockerfile を送り始めるのを待っている。
ここには壮大な宇宙的アイロニーがある。
これはすばらしい進展だ、Nils! AGI House で話して以来、このプロジェクトの進捗を見られてうれしい。
依然として、別アーキテクチャ向けには別のものが必要。
良いアイデアだ! これは実際にはどう動くのか?
ラントの図を使っているのが良い。
これはどういう意味? Ruby をインストールしていないユーザーにも、ポータブルな Ruby 実行ファイルを配布できるようになるの?