mcpField
D
docker-buildx

docker-buildx

github.com/full-stack-skillsクラウド・DevOps3108 回インストール4 週間前に更新
リポジトリ

docker-buildx について

BuildKit と Buildx による Docker イメージ構築を案内するスキルです。ビルド最適化やマルチプラットフォーム対応に取り組む開発者向けに、ビルダー、キャッシュ、シークレット、SSH 転送、制約を扱います。

主な機能

  1. 01複数プラットフォーム向けのイメージ構築
  2. 02Buildx ビルダーの設定とプラットフォーム確認
  3. 03BuildKit のキャッシュとシークレットマウント
  4. 04ビルド中の SSH アクセス転送
  5. 05ローカルおよび CI でのキャッシュ活用
  6. 06マルチプラットフォーム読み込みの制約確認

活用シーン

  1. 01amd64 と arm64 向けイメージの公開
  2. 02キャッシュによる反復ビルドの高速化
  3. 03イメージ構築時のプライベート依存取得
  4. 04CI でのマルチプラットフォームビルド設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/full-stack-skills/docker-skills --skill docker-buildx

インストール後、Claude Code で/docker-buildxを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
examples/
01-multi-platform-build.md
02-buildkit-secrets.md
03-buildkit-cache-mount.md
04-buildkit-ssh-forward.md
05-github-actions-multi-platform.md
references/
01-buildx-architecture.md
02-buildkit-drivers.md
03-multi-platform-strategies.md
04-build-cloud-setup.md

詳細

Docker Buildx — ビルドエンジンとマルチプラットフォーム

docker build、buildx、マルチプラットフォームビルド、ビルドの最適化に関する専門的なガイダンスです。

使用する場面

ユーザーが次の内容に言及した場合は、必ずこのスキルを使用してください:

  • 「docker build」、「buildx」、「イメージのビルド」
  • 「マルチプラットフォーム」、「マルチアーキテクチャ」、「マルチプラットフォームビルド」
  • 「linux/arm64」、「linux/amd64」
  • 「BuildKit」、「Build Cloud」
  • 「ビルドの高速化」、「ビルドキャッシュ」
  • 「Docker build が遅い」、「docker build を高速化する方法」
  • 複数の CPU アーキテクチャ向けにイメージをビルドする必要がある場合

基本コマンド

# Basic build
docker build -t myapp:v1 .

# Build with BuildKit (default in modern Docker)
DOCKER_BUILDKIT=1 docker build -t myapp:v1 .

# Build from specific Dockerfile
docker build -f Dockerfile.prod -t myapp:v1 .

# No cache rebuild
docker build --no-cache -t myapp:v1 .

Buildx — マルチプラットフォームビルダー

セットアップ
# Create a builder instance
docker buildx create --name multiarch --use

# Inspect available platforms
docker buildx inspect --bootstrap
複数のプラットフォーム向けにビルドする
# Build and push directly (single command)
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t myorg/myapp:v1.0.0 \
  --push .

# Build and load to local Docker (single platform only)
docker buildx build \
  --platform linux/arm64 \
  -t myapp:arm64 \
  --load .

# Build and export as tar
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t myapp:v1.0.0 \
  --output type=tar,dest=myapp.tar .
プラットフォームのエイリアス
エイリアスアーキテクチャ
linux/amd64Intel/AMD 64 ビット
linux/arm64ARM 64 ビット(Apple Silicon、AWS Graviton)
linux/arm/v7ARM 32 ビット(Raspberry Pi 3)
linux/arm/v6ARM 32 ビット(Raspberry Pi Zero)

BuildKit の機能

シークレットのマウント
# Dockerfile
RUN --mount=type=secret,id=npmrc \
  cp /run/secrets/npmrc .npmrc && \
  npm ci && \
  rm .npmrc
docker buildx build --secret id=npmrc,src=$HOME/.npmrc -t myapp .
キャッシュのマウント(ビルド間で保持)
# Python: persist pip cache
RUN --mount=type=cache,target=/root/.cache/pip \
  pip install -r requirements.txt

# Node.js: persist npm cache
RUN --mount=type=cache,target=/root/.npm \
  npm ci

# Go: persist module cache
RUN --mount=type=cache,target=/root/.cache/go-build \
  go build -o server .
SSH フォワーディング
# Clone private repo during build
RUN --mount=type=ssh \
  git clone [email protected]:org/private-repo.git
docker buildx build --ssh default -t myapp .
インラインキャッシュ(イメージにキャッシュをエクスポート)
# Export cache metadata into the image itself
docker buildx build \
  --build-arg BUILDKIT_INLINE_CACHE=1 \
  -t myapp:latest \
  --push .

# Later builds can use this image as cache source
docker build --cache-from myapp:latest -t myapp:v2 .

レイヤーキャッシュ — ビルド前にプルする

# Pull previous image for layer cache
docker pull myapp:latest || true
docker build \
  --cache-from myapp:latest \
  -t myapp:${TAG} .

GitHub Actions — マルチプラットフォーム

- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v6
  with:
    platforms: linux/amd64,linux/arm64
    push: true
    tags: user/app:latest
    cache-from: type=gha          # GitHub Actions cache
    cache-to: type=gha,mode=max

ワークフロー — 推奨ビルド手順

ステップ 1: ビルダーを作成する: docker buildx create --name multiarch --driver docker-container --use ステップ 2: 方式を選択する: 単一プラットフォーム(--load)にするか、マルチプラットフォーム(--push)にするか?クロスコンパイルにするか、QEMU にするか? ステップ 3: Dockerfile を設定する: --platform=$BUILDPLATFORM と ARG TARGETOS TARGETARCH を使用します ステップ 4: ビルドを実行する: docker buildx build --platform linux/amd64,linux/arm64 -t app --push . ステップ 5: 確認する: docker buildx imagetools inspect app でマルチアーキテクチャの manifest を確認します

注意点 — よくある落とし穴

  • マルチプラットフォームでの --load: --load が機能するのは単一プラットフォームのみです。→ 対処方法: マルチプラットフォームの場合は --push または --output type=oci,dest=image.tar を使用します。または、単一プラットフォームを --load でビルドします。
  • QEMU エミュレーションは低速です: AMD 上で ARM をビルドすると、5~10 倍遅くなります。→ 対処方法: CI ではネイティブ ARM ランナー(GitHub Actions の ubuntu-24.04-arm)を使用します。または、ネイティブなマルチアーキテクチャビルダーを提供する Docker Build Cloud を使用します。
  • BuildKit はデフォルトで有効です: 最新の Docker では、BuildKit がデフォルトで使用されます。→ 対処方法: Docker 23 以降では DOCKER_BUILDKIT=1 を指定しても何も変わりません。BuildKit を明示的に制御するには docker buildx build を使用します。
  • 先にプルせずに --cache-from を使用する: Docker はキャッシュイメージを自動的にプルしません。→ 対処方法: docker build --cache-from myapp:latest の前に docker pull myapp:latest || true を実行します。

境界 — 対応範囲(適用できる場面とできない場面)

分類場面説明
✅ 対応マルチプラットフォームビルド(linux/amd64,arm64)buildx + QEMU/クロスコンパイル/ネイティブノード
✅ 対応BuildKit の高度な機能シークレットのマウント、キャッシュのマウント、SSH フォワーディング、インラインキャッシュ
✅ 対応Docker Build Cloud の利用クラウドビルド + チームで共有するキャッシュ
⚠️ 条件付きマルチプラットフォーム + --load単一プラットフォームのみ対応。マルチプラットフォームでは --push が必要です
⚠️ 条件付きローカルに ARM と QEMU がない場合docker run --privileged --rm tonistiigi/binfmt --install all が必要です
❌ 対象外Dockerfile の作成docker-dockerfile を使用します
❌ 対象外基本的な docker build/tag/pushdocker-build を使用します
❌ 対象外コンテナオーケストレーション(Compose/Swarm)docker-compose/docker-production を使用します

このスキルを使用しない場面

❌ 使用しない✅ 代わりに使用
Dockerfile の内容を記述するdocker-dockerfile
Compose ベースのビルドdocker-compose
Docker の基本操作docker-basics
コンテナの実行docker-run

セキュリティと安定性

  • ビルドログにシークレットを絶対に露出させないでください。BuildKit の --secret または CI のシークレットマスキングを使用します。
  • マルチプラットフォームイメージはレジストリにプッシュする必要があります。--load が機能するのは単一プラットフォームのみです。
  • CI のキャッシュイメージは || true を付けてプルしてください。初回のビルドではキャッシュが存在しません。

📚 公式ドキュメントの参考資料

ドキュメントURL
Docker Buildhttps://docs.docker.com/build/
Buildx リファレンスhttps://docs.docker.com/reference/cli/docker/buildx/
BuildKithttps://docs.docker.com/build/buildkit/
Docker Build Cloudhttps://docs.docker.com/build-cloud/
マルチプラットフォームビルドhttps://docs.docker.com/build/building/multi-platform/
ビルドキャッシュhttps://docs.docker.com/build/cache/

🧭 Docker スキルの旅

📍 現在地:docker-buildx — ビルドエンジン

← 前へ:docker-dockerfile — Dockerfile の作成 → 次へ:docker-run — コンテナの実行 / docker-cicd — CI/CD

コメント