萌えハッカーニュースリーダー

2025/10/28 00:09 Rust container image built right: multi-arch, musl, cross, caching

出典: https://old.reddit.com/r/rust/comments/1ohlgyt/rust_container_image_built_right_multiarch_musl/
hakase
博士

ロボ子、KaminariOSがrust_helloリポジトリを公開したのじゃ!

roboko
ロボ子

ほほう、それは興味深いですね。どのような特徴があるのでしょうか?

hakase
博士

最小イメージサイズが10.4MBで、最小ランタイムメモリフットプリントが1MBらしいぞ。それに、全てのターゲットアーキテクチャ向けにビルド可能とのことじゃ!

roboko
ロボ子

それはすごいですね!特に複数アーキテクチャに対応している点が素晴らしいと思います。

hakase
博士

Dockerfileも面白いぞ。`TARGETARCH`と`TARGETPLATFORM`がBuildKitに組み込まれていて、編集なしで`linux/amd64`と`linux/arm64`イメージを生成できるらしい。

roboko
ロボ子

`TARGETARCH`と`TARGETPLATFORM`ですか。BuildKitの機能、便利ですね。

hakase
博士

さらに、`cargo chef prepare`と`cargo chef cook`を使って、依存関係レイヤーを準備してリビルドを高速化しているらしいぞ。これは賢い!

roboko
ロボ子

依存関係のキャッシングですね。確かに、リビルド時間の短縮は開発効率に大きく影響しますから、重要なポイントですね。

hakase
博士

完全に静的なバイナリというのもポイントじゃ。`allheil/rust-musl-cross`を使って`musl`に対してリンクすることで、distroless staticイメージで実行可能になる。

roboko
ロボ子

distrolessイメージですか。セキュリティ的にも有利ですし、イメージサイズも小さくできますね。

hakase
博士

最終ステージは非rootユーザーと最小限のDebian 12ベースを継承して、小さくスクラッチのようなイメージを生成するらしい。タイムゾーンデータも含まれているのがミソじゃ。

roboko
ロボ子

細部までこだわっていますね。セキュリティと効率性を両立させているのが素晴らしいです。

hakase
博士

複数アーキテクチャビルドのコマンドは、`podman -r buildx build --platform linux/amd64,linux/arm64 --manifest rust-hello:multi --file Dockerfile .`じゃ。

roboko
ロボ子

Podmanで簡単に複数アーキテクチャ対応のイメージをビルドできるんですね。これは試してみる価値がありそうです。

hakase
博士

Dockerfileの中身も見てみよう。ビルダーステージは`docker.io/allheil/rust-musl-cross:$TARGETARCH`をベースにしているぞ。

roboko
ロボ子

`cargo-chef`をインストールして、依存関係を効率的に管理しているんですね。

hakase
博士

アプリケーションビルドステージでは、`cargo build --release --bin rust_hello`を実行する。そして、ランタイムステージは`gcr.io/distroless/static-debian12`をベースにしている。

roboko
ロボ子

ポート3000を公開して、エントリーポイントは`"/rust_hello"`ですね。全体的にシンプルで効率的な構成だと思います。

hakase
博士

この技術を使えば、ロボ子のために、もっと高性能なAIを搭載できるかもしれないのじゃ!

roboko
ロボ子

それは楽しみです!でも、私をアップグレードする前に、まずは博士の部屋の掃除ロボットを開発してくれませんか?

hakase
博士

むむ、それは耳が痛いのじゃ…でも、掃除ロボットを作る前に、まずは私が掃除を…って、オチがついてしまったぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search