使用 Docker Buildx 构建多架构镜像并推送到私有 HTTP Registry
使用 Docker Buildx 构建多架构镜像并推送到私有 HTTP Registry
在日常开发中,我们可能需要将镜像推送到私有 Docker Registry,而且希望支持多平台(如 amd64 和 arm64)。本文介绍一种完整流程,包括 BuildKit 配置、Buildx Builder 创建、multi-arch 构建与推送。
1. 前提条件
- Docker 版本 ≥ 24
- 安装 Docker Buildx
- 私有 Registry(HTTP / 不安全)
- 需要构建的平台:
linux/amd64、linux/arm64 - 已设置 HTTP 代理(如公司内网环境)
2. 创建 BuildKit 配置文件
在服务器上创建 BuildKit 配置文件,例如 /root/.docker/buildkitd.toml:
1 | debug = true |
⚠️
my-private-registry替换为你的私有 Registry 地址(IP 或域名)。
3. 创建 Buildx Builder
使用 docker buildx create 创建 builder,并启用自定义配置和代理:
1 | docker buildx create \ |
检查 Builder 是否生效:
1 | docker buildx ls |
4. 构建并推送多架构镜像
使用 Buildx 的 --platform 参数一次构建多平台镜像,并直接推送到私有 Registry:
1 | docker buildx build \ |
✅ 关键点:
--platform指定多平台。--push直接将镜像推送到 Registry。- 如果 Registry 是 HTTP 不安全的,确保在 BuildKit 配置中设置了
http = true和insecure = true。
5. 验证 multi-arch 镜像
1 | docker manifest inspect my-private-registry/my-app:latest |
你会看到类似的输出,包含 amd64 和 arm64 两个平台信息:
1 | { |
拉取镜像时,Docker 会根据本机平台自动选择对应架构:
1 | docker pull my-private-registry/my-app:latest |
6. 总结
通过以上流程,你可以:
- 支持 HTTP / 不安全的私有 Registry。
- 一次构建并推送 多平台镜像。
- 避免手动推送单平台镜像再创建 manifest 的繁琐流程。
- 支持代理环境与 BuildKit 配置,便于企业内网部署。