Skip to main content

docker-buildx

Expert guidance for Docker image building — docker build CLI, buildx for multi-platform builds, BuildKit features (secret mounts, cache mounts, SSH forwarding, inline cache), Docker Build Cloud for accelerated cloud builds, layer caching strategies (--cache-from, --cache-to, GHA cache, registry cache), and CI/CD build optimization. Use when the user asks about docker build, buildx, multi-platform, multi-arch, linux/arm64, BuildKit, Build Cloud, Docker build acceleration, or build optimization. 使用场景:docker build、buildx、多平台构建、multi-platform、linux/arm64、BuildKit、Docker Build Cloud、构建加速、build optimization.

소스 정보

저장소
full-stack-skills/docker-skills
최근 소스 활동
2026년 10월 3일 17:03
감지된 SKILL.md 언어
영어
스타
3
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
11 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
docker-buildx
description
Expert guidance for Docker image building — docker build CLI, buildx for multi-platform builds, BuildKit features (secret mounts, cache mounts, SSH forwarding, inline cache), Docker Build Cloud for accelerated cloud builds, layer caching strategies (--cache-from, --cache-to, GHA cache, registry cache), and CI/CD build optimization. Use when the user asks about docker build, buildx, multi-platform, multi-arch, linux/arm64, BuildKit, Build Cloud, Docker build acceleration, or build optimization. 使用场景:docker build、buildx、多平台构建、multi-platform、linux/arm64、BuildKit、Docker Build Cloud、构建加速、build optimization.
license
Apache-2.0
# Docker Buildx — 构建引擎与多平台 Expert guidance for `docker build`, buildx, multi-platform builds, and build optimization. ## When to Use **ALWAYS use this skill when the user mentions:** - "docker build", "buildx", "构建镜像" - "multi-platform", "multi-arch", "多平台构建" - "linux/arm64", "linux/amd64" - "BuildKit", "Build Cloud" - "构建加速", "build cache", "构建缓存" - "Docker build 慢", "怎么加速 docker build" - Need to build images for multiple CPU architectures ## Core Commands ```bash # 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 — Multi-Platform Builder ### Setup ```bash # Create a builder instance docker buildx create --name multiarch --use # Inspect available platforms docker buildx inspect --bootstrap ``` ### Build for Multiple Platforms ```bash # 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 . ``` ### Platform Aliases | Alias | Architectures | |-------|---------------| | `linux/amd64` | Intel/AMD 64-bit | | `linux/arm64` | ARM 64-bit (Apple Silicon, AWS Graviton) | | `linux/arm/v7` | ARM 32-bit (Raspberry Pi 3) | | `linux/arm/v6` | ARM 32-bit (Raspberry Pi Zero) | ## BuildKit Features ### Secret Mount ```dockerfile # Dockerfile RUN --mount=type=secret,id=npmrc \ cp /run/secrets/npmrc .npmrc && \ npm ci && \ rm .npmrc ``` ```bash docker buildx build --secret id=npmrc,src=$HOME/.npmrc -t myapp . ``` ### Cache Mount (Persist Across Builds) ```dockerfile # 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 Forwarding ```dockerfile # Clone private repo during build RUN --mount=type=ssh \ git clone git@github.com:org/private-repo.git ``` ```bash docker buildx build --ssh default -t myapp . ``` ### Inline Cache (Export Cache into Image) ```bash # 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 . ``` ## Layer Caching — Pull Before Build ```bash # Pull previous image for layer cache docker pull myapp:latest || true docker build \ --cache-from myapp:latest \ -t myapp:${TAG} . ``` ## GitHub Actions — Multi-Platform ```yaml - 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 ``` ## Workflow — 推荐构建流程 Step 1: **创建 Builder**: `docker buildx create --name multiarch --driver docker-container --use` Step 2: **选择方案**: 单平台(--load)还是多平台(--push)?交叉编译还是 QEMU? Step 3: **配置 Dockerfile**: 使用 `--platform=$BUILDPLATFORM` + `ARG TARGETOS TARGETARCH` Step 4: **执行构建**: `docker buildx build --platform linux/amd64,linux/arm64 -t app --push .` Step 5: **验证**: `docker buildx imagetools inspect app` 确认多架构 manifest ## Gotchas — Common Pitfalls - **`--load` with multi-platform**: `--load` only works for a SINGLE platform. → **Recovery**: Use `--push` or `--output type=oci,dest=image.tar` for multi-platform; or build single platform with `--load`. - **QEMU emulation is slow**: Building ARM on AMD is 5-10x slower. → **Recovery**: Use native ARM runners in CI (`ubuntu-24.04-arm` on GitHub Actions); or Docker Build Cloud for native multi-arch builders. - **BuildKit by default**: Modern Docker uses BuildKit by default. → **Recovery**: `DOCKER_BUILDKIT=1` is a no-op on Docker 23+; use `docker buildx build` for explicit BuildKit control. - **`--cache-from` without pulling first**: Docker won't pull the cache image automatically. → **Recovery**: `docker pull myapp:latest || true` before `docker build --cache-from myapp:latest`. ## Boundary — 能力边界(适用与不适用场景) | 分类 | 场景 | 说明 | |------|------|------| | ✅ 能做 | 多平台构建(linux/amd64,arm64) | buildx + QEMU/交叉编译/原生节点 | | ✅ 能做 | BuildKit 高级特性 | secret mount、cache mount、SSH 转发、内联缓存 | | ✅ 能做 | Docker Build Cloud 接入 | 云端构建 + 团队共享缓存 | | ⚠️ 需条件 | 多平台 + --load | 仅支持单平台,多平台需 --push | | ⚠️ 需条件 | ARM 本地无 QEMU | 需 `docker run --privileged --rm tonistiigi/binfmt --install all` | | ❌ 超范围 | Dockerfile 编写 | 使用 `docker-dockerfile` | | ❌ 超范围 | 基础 docker build/tag/push | 使用 `docker-build` | | ❌ 超范围 | 容器编排(Compose/Swarm) | 使用 `docker-compose`/`docker-production` | ## When NOT to Use This Skill | ❌ Skip | ✅ Use Instead | |---------|---------------| | Writing Dockerfile content | `docker-dockerfile` | | Compose-based builds | `docker-compose` | | Docker basics | `docker-basics` | | Running containers | `docker-run` | ## Security & Stability - Never expose secrets in build logs. Use `--secret` for BuildKit or CI secrets masking. - Multi-platform images must be pushed to a registry — `--load` only works for single platform. - Cache images in CI should be pulled with `|| true` — first build won't have a cache. ## 📚 官方文档参考 | 文档 | 地址 | |------|------| | Docker Build | https://docs.docker.com/build/ | | Buildx 参考 | https://docs.docker.com/reference/cli/docker/buildx/ | | BuildKit | https://docs.docker.com/build/buildkit/ | | Docker Build Cloud | https://docs.docker.com/build-cloud/ | | 多平台构建 | https://docs.docker.com/build/building/multi-platform/ | | 构建缓存 | https://docs.docker.com/build/cache/ | ## 🧭 Docker Skills Journey > 📍 **You are here: `docker-buildx` — 构建引擎** **← Previous**: `docker-dockerfile` — Write Dockerfiles **→ Next**: `docker-run` — Run containers / `docker-cicd` — CI/CD
GitHub에서 보기