如何通过docker构建双架构镜像

Updated on with 0 views and 0 comments

通过 Docker 构建双架构镜像(如同时支持 x86 和 ARM 架构)通常需要使用 Docker Buildx 插件。以下是详细的步骤:

1. 安装 Docker Buildx 插件

Docker Buildx 是 Docker 官方提供的工具,用于构建多架构镜像。如果系统中尚未安装 Buildx,可以通过以下命令安装:

mkdir -p $HOME/.docker/cli-plugins
wget https://github.com/docker/buildx/releases/download/v0.12.0/buildx-v0.12.0.linux-amd64 -O $HOME/.docker/cli-plugins/docker-buildx
chmod +x $HOME/.docker/cli-plugins/docker-buildx

安装完成后,可以通过以下命令查看 Buildx 版本:

docker buildx version

2. 安装 QEMU 和配置 binfmt_misc

apt install -y qemu-user-static binfmt-support
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

3. 创建 Buildx 构建器实例

创建一个新的 Buildx 构建器实例,并设置为默认构建器:

docker buildx create --name mybuilder --bootstrap --use

4. 编写 Dockerfile

编写一个适用于多架构的 Dockerfile。例如:

FROM --platform=$TARGETPLATFORM alpine:latest
RUN echo "This is a multi-arch image"

这里使用了 --platform=$TARGETPLATFORM 参数,确保基础镜像与目标架构一致

5. 构建并推送多架构镜像

使用 Buildx 构建并推送镜像到 Docker Hub 或其他镜像仓库:

docker buildx build --platform linux/amd64,linux/arm64 -t yourusername/multiarch-image:latest --push .

此命令会同时构建 x86_64 和 ARM64 架构的镜像,并推送到指定仓库。

或者只构建镜像,文件报存到本地:

docker buildx build --platform=linux/amd64 -t yourusername/multiarch-image:latest-amd64 . --load
docker buildx build --platform=linux/arm64 -t yourusername/multiarch-image:latest-arm64 . --load
 
 
# 保存多架构镜像
docker save -o multiarch-image-amd64.tar yourusername/multiarch-image:latest-amd64
docker save -o multiarch-image-arm64.tar yourusername/multiarch-image:latest-arm64
  
# 导入镜像仓库,双架构
docker load -i multiarch-image-amd64.tar
docker load -i multiarch-image-arm64.tar
 
docker tag yourusername/multiarch-image:latest-amd64 registry:5000/yourusername/multiarch-image:latest-amd64
docker tag yourusername/multiarch-image:latest-arm64 registry:5000/yourusername/multiarch-image:latest-arm64
  
docker push registry:5000/yourusername/multiarch-image:latest-amd64
docker push registry:5000/yourusername/multiarch-image:latest-arm64
 
 
# 构建双架构镜像
docker manifest create --insecure registry:5000/yourusername/multiarch-image:latest registry:5000/yourusername/multiarch-image:latest-amd64 registry:5000/yourusername/multiarch-image:latest-arm64
docker manifest push --insecure registry:5000/yourusername/multiarch-image:latest

6. 验证镜像

可以通过以下命令查看镜像的多架构支持情况:

docker buildx imagetools inspect yourusername/multiarch-image:latest

注意事项

  • 如果使用私有仓库,可能需要额外配置 buildkitd.toml 文件以支持非 HTTPS 推送
  • 确保 Docker 版本支持 Buildx 和多架构构建功能

通过以上步骤,即可成功构建支持双架构的 Docker 镜像。


标题:如何通过docker构建双架构镜像
作者:fyzzz
地址:https://fyzzz.cn/articles/2025/06/03/1748923375956.html