使用 Docker Buildx 制作并推送双架构镜像
1. 确认 Dockerfile
以 golang:1.21-alpine为例:
# 基于 golang alpine 镜像
FROM golang:1.21-alpine# 设置 Go 环境
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct# 更换 alpine 源并安装工具
RUN echo "http://mirrors.ustc.edu.cn/alpine/v3.19/main/" > /etc/apk/repositories && \echo "http://mirrors.ustc.edu.cn/alpine/v3.19/community/" >> /etc/apk/repositories && \apk update && \apk add --no-cache bash makeCMD ["/bin/bash"]
2.创建并启用 buildx builder
docker buildx create --use --name mybuilder
docker buildx inspect --bootstrap
3.构建并推送双架构镜像
docker buildx build \--platform linux/amd64,linux/arm64 \-t myuser/myapp:v1.0 \-t myuser/myapp:latest \--push .
仓库:myuser/myapp
版本:v1.0
platform 指定了要构建的架构
push 表示直接推送到远程仓库(否则只是本地缓存,不会生成 manifest list)
4.验证推送是否成功
docker manifest inspect myuser/myapp:v1.0