Docker构建多架构镜像
·
✅ 原理
docker构建多架构镜像原理是在主机上起一个容器,通过buildctl构建多架构镜像,注意,容器里是没有docker命令的,docker是通过接口调用buildkit来构建多架构镜像。
✅ 跳过证书认证
buildkit.toml
[registry."11.11.11.11:9443"]
insecure = true
skip_verify = true
docker buildx rm xxx
docker buildx ls
docker buildx create --name mybuilder --config ./buildkit.toml --use
在 Dockerfile 里根据 buildx 的目标架构拷贝不同的二进制文件是很常见的需求(多架构镜像)。
buildx 自动提供变量:
| 变量 | 含义 |
|---|---|
TARGETARCH | amd64 / arm64 / 386 / arm / ppc64le … |
TARGETOS | linux / darwin / windows … |
TARGETPLATFORM | linux/amd64、linux/arm64… |
你可以直接在 Dockerfile 里用这些变量 做条件判断。
✅ 方法 1:使用 --platform + TARGETARCH 选择不同文件
你的文件结构例如:
bin/
├── app-amd64
├── app-arm64
Dockerfile:
FROM alpine
ARG TARGETARCH
# 根据平台复制不同的二进制文件
COPY bin/app-${TARGETARCH} /usr/local/bin/app
RUN chmod +x /usr/local/bin/app
CMD ["app"]
构建:
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:v1.0 .
buildx 会自动把 TARGETARCH 注入为:
- amd64
- arm64
🚀 最推荐的写法(简单 + 可维护)
FROM alpine
ARG TARGETARCH
RUN mkdir /app
COPY bin/app-${TARGETARCH} /usr/local/bin/app
RUN chmod +x /usr/local/bin/app
CMD ["app"]
如果你愿意 发一下你的目录结构 + 二进制文件命名格式,
我可以帮你写出 完全适配你项目的 Dockerfile 多架构模板。
更多推荐
所有评论(0)