BuildKitと高度なビルド機能

Docker BuildKitで高度なビルド:マルチプラットフォームイメージ、リモートキャッシング、ビルドシークレット、SSHフォワーディング、buildxコマンド。

Build

詳細な説明

Docker BuildKit

BuildKitはDockerの次世代ビルドエンジンです。Docker 23.0以降デフォルトになっています。

BuildKitの有効化

# 最新のDockerではデフォルトですが、明示的に指定可能:
DOCKER_BUILDKIT=1 docker build .

マルチプラットフォームビルド

複数のCPUアーキテクチャ向けにイメージをビルド:

# ビルダーを作成して使用
docker buildx create --use --name mybuilder
docker buildx inspect --bootstrap

# 複数プラットフォーム向けにビルド
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t my-app:v1.0 \
  --push .

ビルドシークレット

イメージレイヤーに漏洩させずにシークレットを渡す:

# Dockerfile
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm ci
docker build --secret id=npmrc,src=$HOME/.npmrc .

SSHフォワーディング

ビルド中のプライベートリポジトリアクセスのためにSSHエージェントを転送:

RUN --mount=type=ssh git clone git@github.com:private/repo.git
docker build --ssh default .

キャッシュ管理

# レジストリをキャッシュソースとして使用
docker buildx build \
  --cache-from type=registry,ref=myregistry/my-app:cache \
  --cache-to type=registry,ref=myregistry/my-app:cache,mode=max \
  -t my-app:v1.0 .

# ローカルキャッシュディレクトリを使用
docker buildx build \
  --cache-from type=local,src=/tmp/buildcache \
  --cache-to type=local,dest=/tmp/buildcache \
  -t my-app:v1.0 .

ビルド引数

docker build \
  --build-arg NODE_VERSION=20 \
  --build-arg BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
  -t my-app:v1.0 .

ユースケース

ARMとx86デプロイメント向けのマルチアーキテクチャイメージのビルド、レジストリベースキャッシングによるCI/CDビルド時間の最適化、ビルド中のNPMトークンやSSHキーの安全な受け渡し、複雑なビルドパイプラインの管理。

試してみる — Docker CLI Reference

フルツールを開く