惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
B
Blog
博客园 - Franky
H
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
云风的 BLOG
云风的 BLOG
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
宝玉的分享
宝玉的分享
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
V
V2EX
Martin Fowler
Martin Fowler
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队

博客园 - 不是豆豆

在 https 反向代理后的 IIS 站点,配置 IIS 重定向会导致 https 变为 http,如何让 IIS 重定向返回相对地址的 Location 头 切换 Google Play 国家地区 NuGet 命令行记录 在 UnionTech OS Server 20 Euler 64bit 上安装 docker 环境 在 Windows 7 SP1 或 Windows Server 2008 R2 SP1 系统中安装 ASP.NET Core 10.0 运行时环境 记录各版本 Microsoft Visual C++ Redistributable 官方下载地址 在 PolarDB-PG 上安装 pgvector 扩展 在 microsoft onnxruntime 中使用 arcface model 出错:Invalid input scale: NumDimensions() != 3 在 Windows 下为 PostgreSQL 安装 pgvector 插件 如果两个 Steam 库文件夹中,有相同的两份游戏,这时删除第二份会怎样? 当 linux 主机内存较小运行程序(如 yum update)被 Killed 迁移 Gitea 从 Windows 到 Linux Docker 容器中(使用 SQLite 数据库) 在 EF Core 中使用传统的 DbFirst 模式 在 SkiaSharp 中对图片进行缩放时,结果锯齿较多的处理方案 在 asp.net core web 项目中,创建项目时因选择容器化部署,未配置 IIS Express 应如何进行修改 如何重置 sftpgo 的管理员密码 微信鸿蒙版 8.0.14 查询 navigator.maxTouchPoints 为 0 导致的 bug 在本地 claude code 中使用 copilot pro 订阅 在安装 miniforge3(conda)环境后,每次启动终端(PowerShell)都非常缓慢的处理方案 在 .net framework 4.8 下,若因为安装或升级了 System.ValueTuple 出现问题 在 Windows 11 系统下,日常使用浏览器(Edge、Chrome)常遇到画面撕裂或浏览器在经切换窗口后显示内容不正常 关于 CVE-2025-55315 漏洞问题查验记录 在 gitea 服务器端查询 lfs 文件占用情况 编写 GKD 规则 在 Windows 下 .net 项目中,使用 ViGEm 模拟游戏手柄 为传统 .net framework 项目切换 nlog 日志 处理过大的 docker 日志 测试支持 PolarDB-X(高度兼容 MySQL) 的客户端图形工具 SteamDeck 重置系统密码教程 新版本 portainer ce 在操作容器时,报错 Forbidden - origin invalid
【AI】Docker Buildx 多架构构建配置
不是豆豆 · 2026-08-12 · via 博客园 - 不是豆豆

Docker 安装完成后,如果需要同时构建 amd64arm64 镜像,可以使用 Buildx。

1. 安装 QEMU

如果当前机器是 x86,但需要构建 ARM 镜像,需要先安装 QEMU:

docker run --privileged --rm tonistiigi/binfmt --install all

2. 配置 BuildKit 镜像加速

使用 docker-container 类型的 Buildx Builder 时,BuildKit 是独立容器,不会直接使用 /etc/docker/daemon.json 中的镜像加速配置

创建配置文件:

mkdir -p /etc/buildkit
vi /etc/buildkit/buildkitd.toml

内容:

[registry."docker.io"]
  mirrors = ["你的镜像加速地址"]

例如:

[registry."docker.io"]
  mirrors = ["docker-mirror.example.com"]

3. 创建 multiarch-builder

docker buildx create \
  --name multiarch-builder \
  --driver docker-container \
  --buildkitd-config /etc/buildkit/buildkitd.toml \
  --use

初始化:

docker buildx inspect --bootstrap

查看:

docker buildx ls

如果看到支持:

linux/amd64
linux/arm64

说明配置完成。

4. 多架构构建

同时构建 AMD64 和 ARM64:

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t registry.example.com/myapp:latest \
  --push \
  .

多架构镜像通常直接使用 --push 推送到镜像仓库。

如果只构建当前平台并加载到本地 Docker:

docker buildx build \
  --platform linux/amd64 \
  -t myapp:latest \
  --load \
  .

5. Buildx 缓存

docker-container 类型的 Builder 有自己独立的 BuildKit 构建缓存。

查看缓存:

docker buildx du --builder multiarch-builder

清理缓存:

docker buildx prune --builder multiarch-builder -a -f

如果整个 Builder 都不需要了:

docker buildx rm multiarch-builder

6. 常用命令

查看 Builder:

docker buildx ls

切换到多架构 Builder:

docker buildx use multiarch-builder

切回默认 Builder:

docker buildx use default

查看多架构镜像:

docker buildx imagetools inspect registry.example.com/myapp:latest

注意

使用:

driver = docker-container

时,BuildKit 是独立运行的,因此:

  • Docker 本地已经存在的 nginx:latest 不代表 Buildx 一定直接使用
  • /etc/docker/daemon.jsonregistry-mirrors 不等于 BuildKit 的镜像加速配置
  • Buildx 有自己独立的构建缓存
  • 多架构构建时仍可能需要访问镜像仓库获取不同架构的 manifest

因此建议分别维护:

Docker Engine -> /etc/docker/daemon.json
BuildKit      -> /etc/buildkit/buildkitd.toml