当前位置: 首页 > java >正文

使用buildx构建镜像

创建支持 x86 和 ARM64 的 buildx Builder 并构建镜像

前提条件

  1. Docker 版本:确保 Docker ≥ 19.03,运行:
    docker --version
    
  2. buildx 插件:确认 buildx 可用:
    docker buildx version
    
    若不可用,需启用实验性功能或安装插件(见下方)。
  3. QEMU 模拟器:为跨平台构建安装 QEMU(Docker Desktop 通常已包含,Linux 系统需手动安装):
    sudo apt-get install qemu-user-static
    
  4. 实验性功能(若 buildx 不可用):编辑 ~/.docker/config.json
    {"experimental": "enabled"
    }
    
    或临时设置:
    export DOCKER_CLI_EXPERIMENTAL=enabled
    

步骤 1:创建支持 x86 和 ARM64 的 Builder

  1. 创建 Builder 实例

    docker buildx create --name multiarch-builder \--driver docker-container \--platform linux/amd64,linux/arm64 \--use
    
    • --name multiarch-builder:命名 Builder。
    • --driver docker-container:使用容器驱动隔离构建。
    • --platform:指定支持 linux/amd64linux/arm64
    • --use:设为默认 Builder。
  2. 启动并验证 Builder

    docker buildx inspect --bootstrap
    
    • 输出示例:
      Name:   multiarch-builder
      Driver: docker-container
      Nodes:
      Name:      multiarch-builder0
      Endpoint:  default
      Status:    running
      Platforms: linux/amd64, linux/arm64
      
    • 确认 Platforms 包含 linux/amd64linux/arm64
  3. 列出 Builder

    docker buildx ls
    
    • 确保 multiarch-builder 状态为 running

步骤 2:使用 Builder 构建多平台镜像

  1. 准备 Dockerfile
    确保当前目录有一个有效的 Dockerfile,例如:

    FROM alpine:latest
    CMD ["echo", "Hello, Multi-Arch World!"]
    
  2. 构建并推送镜像
    使用 multiarch-builder 构建支持 x86 和 ARM64 的镜像:

    docker buildx build \--builder multiarch-builder \--platform linux/amd64,linux/arm64 \-t yourusername/myimage:latest \--push .
    
    • --builder multiarch-builder:指定使用创建的 Builder。
    • --platform:目标架构。
    • -t:镜像名称(替换 yourusername 为你的 Docker Hub 用户名)。
    • --push:构建后推送到镜像仓库。
    • .:当前目录(包含 Dockerfile)。
  3. 验证构建结果

    • 检查镜像是否支持多平台:
      docker buildx imagetools inspect yourusername/myimage:latest
      
    • 输出将显示支持的架构(如 linux/amd64linux/arm64)。

注意事项

  • Docker Hub 登录:推送镜像前需登录:
    docker login
    
  • QEMU 安装:若缺少平台支持,运行:
    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    
  • 性能优化:启用 BuildKit 缓存以加速构建:
    export DOCKER_BUILDKIT=1
    
  • 权限:确保用户有 Docker 权限:
    sudo usermod -aG docker $USER
    
  • 清理:若需删除 Builder:
    docker buildx rm multiarch-builder
    

验证

确认 Builder 和镜像支持 x86 和 ARM64:

docker buildx inspect multiarch-builder
docker buildx imagetools inspect yourusername/myimage:latest
http://www.xdnf.cn/news/17149.html

相关文章:

  • 蓝桥杯常用java API
  • 东北大学“进化论”赋能具身导航!SE-VLN:基于多模态大模型的自进化视觉语言导航框架
  • wps创建编辑excel customHeight 属性不是标准 Excel Open XML导致比对异常
  • 【qt5_study】2.使用Qt Designer构造UI界面(信号与槽)
  • PHP实战代码解析与应用分享:用户管理、日志,配置管理与文件操作全解析
  • 《C++》继承完全指南:从入门到精通
  • 基于 Spring Boot 的小区人脸识别与出入记录管理系统实现
  • mac安装pycharm
  • 【Dify学习笔记】:保留原所有数据,升级Dify版本
  • Android 中几种常用布局的优缺点
  • Leetcode 13 java
  • Django中的转发与重定向详解
  • 物联网后端系统架构:从基础到AI驱动的未来 - 第十章:AI促进IOT领域发生革命式发展
  • C# --- 本地缓存失效形成缓存击穿触发限流
  • eclipse类IDE导入现有工程教程
  • 17day-人工智能-机器学习-分类算法-KNN
  • Spring IOC:Java开发中的依赖魔法
  • 【Qt开发】常用控件(一)
  • HTTP性能优化实战:解决高并发场景下的连接瓶颈与延迟问题
  • 【Spring Boot 快速入门】七、阿里云 OSS 文件上传
  • 家庭财务管理系统|基于java和小程序的家庭财务管理系统设计与实现(源码+数据库+文档)
  • 【含文档+PPT+源码】基于SSM的旅游与自然保护平台开发与实现
  • 3D 材质与纹理:让虚拟模型 “以假乱真” 的核心密码
  • 基于ARM+FPGA光栅数据采集卡设计
  • Datart:开源数据可视化的新星,赋能企业数据分析
  • Flink CDC 介绍
  • Linux 系统重置用户密码指南
  • docker镜像源配置教程,以及解决安装好docker配置镜像源后,出现报错。Job for docker.service failed
  • 【Canvas与文字】生存与生活
  • WPF中引用其他元素各种方法