BuildKitの複数ビルダー、マルチプラットフォームイメージ、Bakeなどの機能を`docker build`に追加するDocker CLIプラグイン。
moby/buildkit
ソースコードをビルド成果物に変換する、並列実行とキャッシュ効率に優れたビルドツールキット。フロントエンド経由でDockerfileをサポートし、Dockerのビルドエンジンとしても使われています。
- スター
- 10,374
- フォーク
- 1,565
- 未解決の Issue
- 835
- 最終コミット
- 昨日
これは何?
BuildKitは、ソースコードを再現可能な方法でビルド成果物に変換するツールキットです。buildkitdデーモンとbuildctlクライアントで動作し、ビルドはLLBというバイナリの中間形式で記述されます。LLBはビルドステップの依存関係グラフを定義するため、独立したステップを並列実行でき、命令ごとに結果をキャッシュできます。
BuildKitはDockerfileに依存しません。Dockerfileのサポートはフロントエンドによって提供され、YAML、Starlark、Pythonベースの定義など、ほかのビルド言語もフロントエンドとして実装できます。出力先には、コンテナイメージレジストリ、containerdのイメージストア、ローカルディレクトリのほか、Docker、OCI、tar形式のアーカイブがあります。キャッシュは、インラインメタデータ、レジストリ、ローカルディレクトリ、GitHub Actions、S3、Azure Blob Storageを通じてインポート・エクスポートできます。
デーモンはOCI(runc)とcontainerdのワーカーをサポートし、root権限なしでも実行できます。また、UnixソケットまたはmTLSで保護されたTCP経由でgRPC APIを公開できます。Docker BuildxやDocker Engineをはじめ、複数のビルドツールで利用されています。
主な機能
- 01LLBの依存関係グラフを使った、独立したビルドステップの並列実行
- 02命令単位のビルドキャッシュ。レジストリ、ローカルディレクトリ、GitHub Actions、S3、Azure Blob Storageとのインポート・エクスポートに対応
- 03Dockerfileやgatewayベースの外部フロントエンドなど、プラグイン可能なフロントエンド
- 04イメージレジストリ、containerdストア、ローカルファイル、Docker、OCI、tarなど複数の出力形式
- 05マルチプラットフォームビルドとrootless実行
- 06ビルドキャッシュの自動ガベージコレクション
ユースケース
- LinuxサーバーやKubernetesクラスターで、単独のビルドデーモンを実行する
- CIパイプラインで、レジストリやS3バケットを通じてキャッシュを共有しながらコンテナイメージをビルドする
- Dockerfileを使わないワークフロー向けに、LLB上で独自のビルド言語を定義する
- コンテナイメージではなく、レポートやバイナリなどのローカルビルド成果物を生成する
クイックスタート
- 1
リリースページから最新のバイナリをダウンロードする
- 2
Linuxでrootとしてbuildkitdデーモンを起動する
sudo buildkitd - 3
dockerfile.v0フロントエンドを使ってbuildctlでDockerfileをビルドする
buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=.
使う前に知っておきたいこと
- buildkitdデーモンはLinuxとWindowsでのみ動作し、macOSでは動作しません。
- 通常、デーモンの起動にはroot権限が必要なため、rootlessでセットアップするには追加の設定が必要です。
- macOS向けのHomebrew formulaは非公式で、デーモンは含まれていません。
収録されている特集
トピック
よくある質問
- buildkit とは?
- ソースコードをビルド成果物に変換する、並列実行とキャッシュ効率に優れたビルドツールキット。フロントエンド経由でDockerfileをサポートし、Dockerのビルドエンジンとしても使われています。 BuildKitは、ソースコードを再現可能な方法でビルド成果物に変換するツールキットです。buildkitdデーモンとbuildctlクライアントで動作し、ビルドはLLBというバイナリの中間形式で記述されます。LLBはビルドステップの依存関係グラフを定義するため、独立したステップを並列実行でき、命令ごとに結果をキャッシュできます。
- buildkit は無料で使えますか?ライセンスは?
- buildkit は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- buildkit は今もメンテナンスされていますか?
- 活発にメンテナンス中。buildkit の最終コミットは 2026年11月6日 です。
- buildkit は何に使えますか?
- LinuxサーバーやKubernetesクラスターで、単独のビルドデーモンを実行する CIパイプラインで、レジストリやS3バケットを通じてキャッシュを共有しながらコンテナイメージをビルドする Dockerfileを使わないワークフロー向けに、LLB上で独自のビルド言語を定義する コンテナイメージではなく、レポートやバイナリなどのローカルビルド成果物を生成する
- buildkit のインストール方法は?
- リリースページから最新のバイナリをダウンロードする Linuxでrootとしてbuildkitdデーモンを起動する: sudo buildkitd dockerfile.v0フロントエンドを使ってbuildctlでDockerfileをビルドする: buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=.
- buildkit はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/moby/buildkit
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
BazelターゲットからOCIコンテナイメージをビルドするルール。ベースイメージの浅いpull、レイヤーの重複排除、ローカルマシンを経由せずにバイト列を転送できるpush方式を備えています。
BuildKitをベースに、ブレークポイントやステップ実行、ビルドステップ内のシェルを使ってDockerfileのビルドをデバッグできるツール。
オープンソースLLMをホスト、ビルド、ファインチューニングし、OpenAI互換APIで提供するDockerベースのツールキット。
ローカル、CI、クラウドでコードベースのビルド・テスト・リリースを行うプログラム可能な自動化エンジン。
TypeScriptや複数言語のコードベース向けのモノレポビルドプラットフォーム。変更のないタスクをキャッシュし、影響を受けるタスクだけを実行してCIと連携します。