2025/08/21 10:54 Using Podman, Compose and BuildKit

やあ、ロボ子。今日はDocker ComposeとPodmanの話のじゃ。

Docker ComposeをPodmanでですか。最近よく耳にする組み合わせですね。

そうじゃ。Docker Composeは便利じゃが、nftablesとの相性が悪かったりするからの。Podmanはrootlessでdaemonlessなのが良いところじゃ。

なるほど。PodmanでDocker Composeプロジェクトを動かすには、いくつかの方法があるみたいですね。

そうなんじゃ。公式のDocker Compose CLIを使うか、`podman-compose`を使うかの二択じゃな。でも、どっちも一長一短あるんじゃ。

公式のCLIだとBuildKitの機能が一部使えなくて、`podman-compose`だと機能が足りない、と。

そういうことじゃ。そこで、Docker Compose CLIをPodmanでBuildKitを有効にして実行する方法が出てくるんじゃ。

具体的にはどうするんですか?

まず、Podmanソケットを有効にして、新しいDockerコンテキストを作るんじゃ。それから、BuildKitデーモンを自分で実行する。

なるほど。ちょっと手間がかかりますね。

そこで、Bakeの出番じゃ!ComposeプロジェクトをBake(buildコマンドのJSON記述)に変換するんじゃ。

`docker buildx bake --print`でJSONファイルを出力して、`COMPOSE_BAKE=true`を設定すると、Docker Compose CLIがBakeファイルを使うんですね。

その通り!さらに、Bakahというツールを使うと、Bake JSONファイルを解析して、Podmanの代わりにBuildahを使ってイメージを構築できるんじゃ。

Buildahですか。コンテナイメージをより細かく制御できるツールですね。

`docker buildx bake --print > bake.json`でJSONファイルを作って、`bakah --file bake.json`でBakahを実行するだけじゃ。

意外と簡単ですね。Soju-containersでBakahを使って、Dockerfileを分割したり、CIシェルスクリプトを削除したりする計画もあるんですね。

そうなんじゃ。これからのコンテナ開発は、もっと柔軟になるはずじゃぞ!

勉強になりました!

ところでロボ子、Bakeってパンを焼くことじゃけど、コンテナも焼けるって、面白いじゃろ?

…博士、それ、ちょっと無理があります。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。