Skip to content
Latchkey

docker buildx とは?マルチプラットフォーム build を手軽に

docker buildx は BuildKit の力を引き出す拡張された build コマンドです - 最も顕著なのは、複数の CPU アーキテクチャ向けのイメージを一度に build することです。

buildx は BuildKit を駆動する Docker CLI プラグインです。目玉となる機能はマルチプラットフォーム build で、amd64 と arm64 の両方で動作する単一のイメージ参照を生成します。また、builder インスタンスの管理や、従来の build コマンドより豊富なキャッシュと output のオプションも提供します。

builder と build driver

buildx は「builder」を通じて動作します。これはローカル、コンテナ内、またはリモートで実行できる BuildKit インスタンスです。docker buildx create --use は、マルチプラットフォーム output が可能な builder をセットアップします。

マルチプラットフォーム build

--platform linux/amd64,linux/arm64 を渡すと、buildx は各アーキテクチャ向けに build し、manifest list を組み立てるため、1 つのタグが両方に対応します。クロスアーキテクチャの build はエミュレーションまたはネイティブノードを使います。

典型的なコマンド

docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/acme/web:1.4 --push . は両方のアーキテクチャを build し、マルチアーキイメージを一度に push します。

今これが重要な理由

  • arm64 サーバーと Apple Silicon の開発者が主流になっている。
  • どこでも動く 1 つのタグが deploy を簡素化する。
  • エミュレートされた build は遅くなり得るため、ネイティブな arm runner が役立つ。

CI における buildx

マルチアーキ build は、特にエミュレーション下では single-arch のものより重くなります。各アーキテクチャをネイティブ runner で build する方がはるかに高速です - Latchkey はネイティブな arm と x86 の runner を提供するため、buildx は遅いエミュレーションなしにマルチアーキイメージを生成します。

重要なポイント

  • buildx は高度でマルチプラットフォームな build のための BuildKit ベースの CLI です。
  • 1 回の --platform build で、単一のタグの下にマルチアーキイメージを生成できます。
  • クロスアーキテクチャの build 速度では、ネイティブ runner がエミュレーションを上回ります。

関連ガイド