揭秘Docker多架构镜像推送全流程:如何用Buildx实现一键部署Arm/Am64

在服务器上使用Docker buildx构建适用于jetson(linux/arm64/v8)平台的镜像 使用Docker buildx构建适用于linux/arm64/v8平台的镜像,解决平台不匹配问题 阅读详情

第一章:Docker多架构镜像推送的核心价值

在现代软件交付流程中,应用需要运行在多种硬件架构之上,如 x86_64、ARM64、ARM32 等。Docker 多架构镜像推送技术使得开发者能够构建一次镜像,并将其推送到镜像仓库中,供不同架构平台拉取使用,极大提升了部署效率与兼容性。

跨平台兼容性的实现机制

Docker 利用 manifest 清单列表来管理多架构镜像。通过创建一个逻辑镜像标签(如 myapp:latest),该标签可指向多个具体架构的镜像实例。用户拉取时,Docker 自动识别运行环境并选择匹配的镜像版本。

构建与推送操作步骤

启用多架构支持需先开启 Docker Buildx 功能。以下是典型操作流程:
# 启用 buildx 插件
docker buildx create --use

# 创建新的 builder 实例以支持多架构
docker buildx create --name mybuilder --use

# 构建并推送至镜像仓库,指定目标平台
docker buildx build \
  --platform linux/amd64,linux/arm64,linux/arm/v7 \
  --push -t username/myapp:latest .
上述命令会为三种架构分别构建镜像,并自动上传到 Docker Hub 或私有 registry,随后生成一个联合的 manifest 清单。

多架构推送的优势对比

  • 简化 CI/CD 流程,避免为每个平台单独打标签和推送
  • 提升终端用户体验,无需关心底层架构差异
  • 支持混合集群部署,尤其适用于 Kubernetes 跨节点调度场景
特性传统单架构镜像多架构镜像
部署便捷性需手动选择架构标签自动匹配运行环境
维护成本高(多分支构建)低(统一构建命令)
适用范围单一平台跨平台通用

第二章:理解多架构镜像与Buildx基础原理

2.1 多架构镜像的技术背景与应用场景

随着云计算和边缘计算的普及,硬件架构呈现多样化趋势,x86_64、ARM64 等多种处理器架构并存。为实现一次构建、多端部署,多架构镜像(Multi-Architecture Image)应运而生。
技术演进驱动
容器生态通过引入 manifest list 机制,允许一个镜像标签指向多个架构特定的镜像摘要。例如:

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  --push \
  -t myapp:latest
该命令利用 Buildx 构建跨平台镜像并推送至镜像仓库。`--platform` 指定目标架构,Docker 自动选择对应基础镜像并生成适配的容器层。
典型应用场景
  • 混合集群部署:Kubernetes 集群中同时包含 Intel 和 Apple M 系列节点
  • CI/CD 流水线:统一镜像分发,避免架构兼容问题
  • 物联网网关:在 ARM 设备上运行与云端一致的服务镜像

2.2 Buildx的工作机制与跨平台构建优势

Docker Buildx 是 Docker 官方提供的构建镜像扩展工具,基于 BuildKit 引擎实现高效、可扩展的构建能力。它突破了传统 docker build 的局限,原生支持多平台镜像构建。
多架构支持机制
Buildx 利用 QEMU 和 binfmt_misc 内核功能,在单一构建环境中模拟多种 CPU 架构。例如:
# 启用构建器并添加多架构支持
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest .
上述命令中,--platform 指定目标平台,Buildx 自动拉取对应架构的基础镜像并通过仿真环境完成编译打包。
构建输出多样性
支持将结果导出为镜像、OCI 压缩包或直接推送至远程仓库,提升部署灵活性。
  • 原生集成 CI/CD 流水线
  • 并行构建加速多平台输出
  • 利用缓存优化构建性能

2.3 manifest清单与镜像层共享原理剖析

Docker 镜像的构建依赖于 manifest 清单文件,它定义了镜像的结构组成,包括各层的哈希值、配置信息及平台兼容性数据。
Manifest 的核心字段
{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 7023,
    "digest": "sha256:abc123..."
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 32654,
      "digest": "sha256:def456..."
    }
  ]
}
该 JSON 结构描述了一个多层镜像,其中 digest 唯一标识每一层内容,实现内容寻址。相同层在不同镜像间可共享,避免重复存储。
镜像层共享机制
  • 所有镜像层基于内容哈希进行存储,确保数据不可变性;
  • 多个镜像若包含相同层(如基础镜像 ubuntu:20.04),则仅保留一份物理副本;
  • 拉取新镜像时,客户端比对本地已有层的 digest,跳过已存在的层下载。
此机制显著提升镜像分发效率,降低网络开销与存储占用。

2.4 QEMU在跨架构构建中的角色解析

QEMU作为开源的系统模拟器,在跨架构软件构建中扮演关键角色。它通过动态二进制翻译技术,实现指令集层面的兼容,使开发者能在x86主机上运行ARM、RISC-V等目标架构的完整系统环境。
典型使用场景
  • 嵌入式开发中的交叉编译与测试
  • 多架构CI/CD流水线中的自动化验证
  • 固件与操作系统的前期调试
启动ARM虚拟机示例

qemu-system-aarch64 \
  -machine virt \
  -cpu cortex-a57 \
  -nographic \
  -smp 2 \
  -m 2048 \
  -kernel vmlinuz
上述命令启动一个基于虚拟ARM平台的系统,-machine virt指定通用虚拟平台,-cpu cortex-a57模拟Cortex-A57核心,-nographic禁用图形输出以提升性能,适用于无头构建环境。

2.5 构建上下文与远程缓存的协同机制

在分布式系统中,构建上下文信息与远程缓存的高效协同是提升性能的关键。通过将请求上下文(如用户身份、区域、设备类型)嵌入缓存键策略,可实现细粒度的数据隔离与复用。
缓存键构造策略
采用结构化键名格式,确保上下文信息清晰编码:
// 示例:生成带上下文的缓存键
func GenerateCacheKey(ctx context.Context, resource string) string {
    userID := ctx.Value("userID").(string)
    region := ctx.Value("region").(string)
    return fmt.Sprintf("cache:%s:%s:%s", userID, region, resource)
}
该函数将用户ID和区域作为缓存键的一部分,使相同资源在不同上下文中独立缓存,避免数据污染。
同步更新机制
  • 写操作触发后,同步失效本地与远程缓存
  • 利用消息队列广播变更事件,保障多节点一致性
  • 设置短暂的延迟双删窗口,应对并发读写场景

第三章:环境准备与Buildx实战配置

3.1 启用Docker Buildx支持并验证环境

Docker Buildx 是 Docker 的扩展 CLI 插件,用于启用高级构建功能,包括多平台构建和并行缓存管理。在使用前需确认 Docker 环境已启用 Buildx 支持。
启用 Buildx 并创建构建器实例
默认情况下,Docker 可能未激活 Buildx 构建器。可通过以下命令手动创建并切换:

docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap
第一条命令创建名为 `mybuilder` 的构建器实例并设为默认;第二条初始化该实例,确保其处于运行状态。`--use` 参数使该构建器成为当前上下文的默认选择。
验证 Buildx 环境状态
执行以下命令检查 Buildx 是否正常工作:

docker buildx ls
输出将列出所有构建器实例,重点关注 `PLATFORMS` 字段是否显示多架构支持(如 linux/amd64, linux/arm64)。若显示完整平台列表,表示 Buildx 已成功启用并具备跨平台构建能力。

3.2 创建自定义builder实例并启用多架构支持

在构建跨平台镜像时,需先创建自定义的 `builder` 实例,并启用对多架构的支持。默认的 Docker 构建器不支持交叉编译,因此必须使用 Buildx 扩展功能。
初始化自定义builder
通过以下命令创建并切换到新的 builder 实例:

docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap
第一条命令创建名为 `mybuilder` 的构建器并设为当前使用;第二条命令初始化该实例,确保其处于运行状态。
启用多架构支持
Buildx 基于 QEMU 和 binfmt_misc 实现多架构构建。执行 bootstrap 后,系统将自动注册多种 CPU 架构(如 arm64、ppc64le 等),使得单次构建可输出多个平台镜像。 支持的常见架构包括:
  • linux/amd64
  • linux/arm64
  • linux/arm/v7
此后,可在构建时通过 `--platform` 指定目标平台,实现一次构建、多端部署。

3.3 配置镜像仓库认证与权限管理

认证机制配置
在使用私有镜像仓库时,必须配置认证信息以确保安全访问。Kubernetes 通过 Secret 对象存储仓库凭证。创建 Docker Registry Secret 的命令如下:
kubectl create secret docker-registry regcred \
  --docker-server=https://index.docker.io/v1/ \
  --docker-username=youruser \
  --docker-password=yoursecret \
  --docker-email=youremail@example.com
该命令生成名为 regcred 的 Secret,其中包含访问私有仓库所需的用户名、密码和服务器地址。Pod 通过 imagePullSecrets 字段引用此 Secret,实现镜像拉取时的身份验证。
基于角色的权限控制
为精细化管理镜像操作权限,可结合 RBAC 与镜像仓库自身的 ACL 策略。例如,在 Harbor 中可定义项目级别的角色(如开发者、访客),并映射到 Kubernetes 命名空间的服务账户。
角色镜像拉取镜像推送删除权限
管理员✔️✔️✔️
开发者✔️✔️❌
访客✔️❌❌

第四章:多架构镜像构建与推送全流程实践

4.1 编写支持多架构的Dockerfile最佳实践

为了构建可在多种CPU架构(如 amd64、arm64)上运行的镜像,推荐使用 `docker buildx` 与 `--platform` 参数结合的多阶段构建策略。
启用 BuildKit 多架构支持
确保环境变量启用 BuildKit:
export DOCKER_BUILDKIT=1
该设置启用现代构建功能,支持跨平台构建和并行优化。
Dockerfile 中的通用实践
使用官方基础镜像的多架构标签,并声明目标平台:
FROM --platform=$BUILDPLATFORM golang:1.21-alpine AS builder
ARG TARGETOS
ARG TARGETARCH
RUN echo "Building for $TARGETOS/$TARGETARCH"
其中 `$BUILDPLATFORM` 自动识别主机架构,`ARG` 指令允许外部传参定制目标环境。
构建命令示例
  • 创建 buildx 构建器实例:docker buildx create --use
  • 执行跨平台构建:docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest --push .
此流程生成兼容多种架构的镜像并推送至注册表,实现一次构建、多端部署。

4.2 使用Buildx build命令实现一键交叉编译

Docker Buildx 是 Docker 官方提供的构建扩展工具,支持多平台镜像构建,无需手动配置交叉编译环境。
启用 Buildx 构建器
首先确保启用支持多架构的构建器:
docker buildx create --use mybuilder
该命令创建并激活一个名为 `mybuilder` 的构建器实例,支持跨平台构建。
一键构建多平台镜像
使用 `buildx build` 命令可同时为多种架构生成镜像:
docker buildx build --platform linux/amd64,linux/arm64 -t username/app:latest --push .
`--platform` 指定目标平台,`--push` 构建完成后自动推送至镜像仓库,省去本地导出步骤。
支持的平台列表
架构平台标识
AMD64linux/amd64
ARM64linux/arm64
ARMv7linux/arm/v7

4.3 推送镜像至Registry并生成manifest列表

在完成多架构镜像构建后,需将其推送至容器镜像仓库,并生成跨平台兼容的 manifest 列表。
镜像推送流程
使用 docker push 命令将本地构建的镜像上传至远程 Registry:
docker push myrepo/myapp:v1.2-arm64
docker push myrepo/myapp:v1.2-amd64
该步骤确保各架构镜像独立存在于仓库中,为后续 manifest 合并做准备。标签需明确标识架构,避免混淆。
生成Manifest列表
Docker 提供 manifest 子命令创建多架构清单:
docker manifest create myrepo/myapp:v1.2 \
  --amend myrepo/myapp:v1.2-amd64 \
  --amend myrepo/myapp:v1.2-arm64
--amend 参数用于关联已有镜像,最终生成统一标签 v1.2,支持自动架构匹配拉取。
验证与发布
通过以下命令查看 manifest 结构:
  • docker manifest inspect myrepo/myapp:v1.2:检查支持的架构列表
  • docker manifest push myrepo/myapp:v1.2:推送 manifest 至远程仓库
此机制实现“一次拉取,多架构适配”,提升部署效率与可移植性。

4.4 验证Arm与Am64架构镜像的可运行性

在多架构支持日益普及的背景下,确保容器镜像在 Arm 和 Am64 架构上的可运行性至关重要。开发者需通过交叉架构测试流程验证镜像兼容性。
构建多架构镜像
使用 Docker Buildx 可构建跨平台镜像:
docker buildx build --platform linux/arm64,linux/amd64 -t myapp:multiarch .
该命令指定目标平台为 Arm64 与 Am64,利用 QEMU 模拟实现跨架构编译。
运行时验证流程
  • 在 Arm 设备上拉取镜像并启动容器
  • 执行基础功能测试,确认服务响应正常
  • 监控 CPU 与内存使用情况,识别潜在性能偏差
兼容性测试结果对比
架构启动时间(s)内存占用(MB)是否通过测试
Arm642.1120是
Am641.8115是

第五章:未来部署趋势与生态演进展望

边缘计算驱动的部署架构革新
随着物联网设备数量激增,边缘节点正成为应用部署的关键层级。企业开始将推理服务下沉至靠近数据源的位置,显著降低延迟。例如,某智能制造工厂在产线部署轻量Kubernetes集群,实时分析视觉检测数据:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: edge-vision-agent
spec:
  replicas: 3
  selector:
    matchLabels:
      app: vision-agent
  template:
    metadata:
      labels:
        app: vision-agent
        node-role: edge
    spec:
      nodeSelector:
        node-role: edge
      containers:
      - name: detector
        image: registry.local/vision-detector:v2.1
服务网格与安全边界的融合演进
零信任架构要求每个服务调用都经过身份验证与加密。Istio等服务网格通过mTLS自动建立安全通道,同时集成OPA实现细粒度策略控制。典型策略如下:
  • 所有跨区域调用必须携带JWT令牌
  • 数据库访问仅允许来自“payment-service”的请求
  • 审计日志需记录源IP、目标服务与响应码
AI原生部署模式的兴起
大模型推理推动AI-Native部署范式,结合动态扩缩容与GPU资源调度。某金融风控平台采用Triton Inference Server,根据请求负载自动启停模型实例:
场景实例数GPU类型平均延迟
高峰交易时段8T447ms
夜间批处理2T468ms
用户终端 边缘网关 AI推理集群
构建多架构支持的arm64 amd64系统镜像完整指南 详解如何创建同时兼容arm64和amd64架构的系统镜像,涵盖交叉编译、镜像打包与多平台部署关键步骤,提升跨平台适配效率。 阅读详情

相关推荐

Halcon图片拼接避坑指南:特征点匹配常见问题与解决方案

本文深入解析Halcon图片拼接中特征点匹配的常见问题与解决方案,涵盖特征点提取、匹配优化及变换模型选择等关键环节。针对工业视觉检测中的拼接错位、重影等问题,提供参数调优、图像预处理和算法选择等实战技巧,帮助开发者高效避坑并提升拼接精度。

weixin_28694169的博客 198

docker buildx 构建arm64架构镜像

前提条件 组件 版本 docker v20.10.15 rocky linux (centos 8) v8.5 安装 参考:Build multi-platform images 安装 docker run --privileged --rm tonistiigi/binfmt --install all 创建builder docker buildx create --use --name mybuild default 构建镜像 使用go语言为例子,参考这位大佬博客: cat

oneslide 1万+

VisionMaster SDK C#二次开发核心技术指南

以下是基于**VisionMaster SDK C#二次开发核心技术指南**,结合实战案例与关键代码解析,帮助开发者快速掌握工业视觉应用集成。

东城十三 3052

docker使用buildx构建多平台(x86,arm64)构架镜像

buildx 可用于在单个平台上实现,跨 CPU 架构编译。 buildx 实现 依赖 QEMU (开源的模拟器),支持多种cpu 架构

atzqtzq的博客 1万+

C#实战:手把手教你用SerialPort实现RS485 ModbusRTU通信(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现RS485 ModbusRTU通信,包括硬件准备、串口配置、数据收发核心逻辑及高级通信技巧。通过实战案例和完整代码,帮助开发者快速掌握工业级通信框架的构建方法,提升设备间通信的稳定性和效率。

weixin_29207533的博客 255

人形机器人解耦驱动腿部设计与FAST性能优化

机器人运动控制的核心在于动力学解耦与能量效率优化。通过多连杆机构设计,可以实现关节运动的独立控制,显著降低惯性叠加和能量损耗。DecARt Leg采用创新的齿轮-四杆复合机构,将腿部伸缩与摆动运动完全解耦,配合多杆踝关节传动系统,实测行走速度可达4.18m/s。这种解耦设计不仅提升了动态性能,其提出的FAST指标更为腿部构型提供了量化评估基准,在仓储物流、地形适应等场景展现出显著优势,为人形机器人运动控制提供了新的技术路径。

weixin_33759613的博客 238

在 x86 平台下使用docker 构建linux/arm64 镜像

在工作过程中遇到需要在linux/arm64环境下运行应用服务器的场景,但是我们开发环境常见的是x86的,那么这篇文章就能给你带来帮助!提示:以下是本篇文章正文内容,下面案例可供参考。

u010531500的博客 1577

LPDDR6 Efficiency Mode 技术探讨

LPDDR6 Efficiency Mode 技术探讨

zilan23的博客 1158

docker buildx 构建多架构 arm amd 等平台

以下 nacos 示例,找了一个支持 arm64 + amd架构的 拉取没有特殊的指定,在拉取时,若是镜像源支持多架构,会适配当前架构的进行优先拉取,若是只有 amd ,那也会直接拉取,但运行就会出错。如图显示的是 arm6 的架构 2、所以需要拉取的镜像是支持 arm64 的,可以通过镜像网站,通过 tag 中 OS/ARCH 看到这个tag 镜像支持的架构 有些仅支持 amd64 架构,这个需要注意。3、若是已经拉取了镜像,则可以 通过 docker inspect 的命令查看。

明天 1293

【Unity实战】实现最完美最简单的UI适配方案,背景压缩或者拉伸变形解决方案,手机刘海屏适配,适配不同分辨率,不同尺寸,不同设备。

这期来讲一个简单的UI设计方案,很多同学可能搞不懂锚点、轴心这些概念,导致做好的UI在别人的设备上,乱跑或者是重叠,或者是参加游戏老发时间比较紧来不及做适配,都可以来试试这个方法,通过填充边框来保持游戏画面的原始比例,所以它的缺点也很明显,在一些移动设备上会浪费比较大的显示面积。 unity不同设备UI变形? UI在不同设备上如何适配?

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3648

ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting `torch.set解决方案

本文主要介绍了ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting 'torch.set_default_device(device)` requires `accelerate`解决方案,希望能对使用transformers的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

docker buildx 构建arm64架构镜像_docker buildx 创建arm镜像

docker buildx的原理是创建一个buildkit容器, 只需要通过传入私库。(img-vdOTED5H-1713126730216)]但是推送http私库推送不了,目前无人解决,参考。使用go语言为例子,参考。

2301_78398209的博客 1591

Android 10.0 SystemUI下拉状态栏点击设置跳转设置时白屏修改

在10.0的系统rom定制化开发中,在SystemUI下拉状态栏下方点击设置图标跳转设置的过程中,发现 有白屏显示挡住设置界面,显示白屏,接下来分析下相关原因来解决这个问题

安卓兼职framework和app工程师的博客 79

揭秘Docker Buildx多架构构建:如何一次构建适配ARM/AMD/X86全平台镜像

掌握Docker镜像多架构构建buildx,轻松实现一次构建适配ARM、AMD、X86全平台。利用Buildx跨平台编译能力,开发者可在单次操作中生成多架构镜像,提升部署效率。适用于边缘计算、混合硬件集群等场景,显著简化CI/CD流程。值得收藏的实战指南,点击了解具体操作方法。

Algorift的博客 1469

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

揭秘Docker Buildx黑科技:如何一键构建三大主流架构(ARM64/AMD64/RISC-V)容器镜像

掌握跨平台部署难题?揭秘Docker Buildx构建多架构镜像(ARM64+AMD64+RISC-V)的完整流程,支持CI/CD、边缘计算等场景。利用QEMU模拟与Buildx命令实现一键编译多架构镜像,提升兼容性与部署效率,值得收藏。

InstrFun的博客 1121

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【多架构镜像构建革命】:用Docker Buildx同时打包ARM64、AMD64、RISC-V的5个关键步骤

掌握Docker Buildx 构建多架构镜像(ARM64+AMD64+RISC-V)的完整流程,解决跨平台部署难题。适用于边缘计算、云原生和异构集群场景,通过QEMU模拟与Buildx驱动实现一键编译。五步完成多架构镜像构建,提升CI/CD效率,值得收藏。

LiteCompile的博客 1232

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Docker Buildx构建多架构镜像全攻略(ARM+AMD64全覆盖)

掌握Docker Buildx 构建多架构镜像(ARM+AMD)的完整方法,解决跨平台部署难题。涵盖QEMU模拟、Builder创建与Manifest清单使用,支持本地及云端CI/CD集成,实现一次构建、多架构通用。高效兼容ARM与AMD64环境,值得收藏。

QuickProceed的博客 1633

【Docker Buildx多架构构建终极指南】:手把手教你构建ARM64、AMD64、RISC-V跨平台镜像

掌握Docker Buildx 构建多架构镜像(ARM64+AMD64+RISC-V)的完整方法,解决跨平台部署难题。涵盖QEMU模拟、Buildx配置、CI/CD集成等核心步骤,支持本地与云端环境一键构建。提升镜像兼容性与分发效率,值得收藏。

CodeNexus的博客 1290

多架构镜像的构建-docker buildx/docker manifest

简介:企业改造或云原生适配使用等;自建k8s、配合ECR等。或整个流水线镜像部分;以下为使用适配大部分环境使用或尝试情况。使用工具均免费开源。加速器等有个人或购买的建议使用个人的;‌:如同时支持 Intel/AMD 和 ARM 处理器的应用部署。‌:用户无需手动指定 --platform 参数,Docker 自动适配‌以nginx arm64版本为例。

weixin_68896602的博客 767

FastAPI Docker多架构镜像:amd64与arm64完整指南

想要在多种CPU架构上部署你的FastAPI应用吗?FastAPI Docker多架构镜像技术让你可以轻松构建同时支持amd64和arm64平台的容器镜像。无论是传统的x86服务器还是现代的ARM架构设备(如苹果M系列芯片、树莓派、AWS Graviton),通过Docker多架构构建,你都能实现一次构建、随处运行的目标!🚀 ## 为什么需要多架构Docker镜像? 随着云原生和边缘计算的发

gitblog_00712的博客 855

Docker Buildx多架构构建实战:从零搭建支持ARM/AMD的CI/CD流水线(专家级配置曝光)

掌握Docker Buildx的Agent镜像多架构构建方法,轻松实现ARM与AMD跨平台CI/CD。涵盖QEMU模拟、Buildx Builder创建与GitLab Runner集成,提升构建效率与兼容性,专家级配置实战指南值得收藏。

Algorift的博客 1136

Docker官方镜像多架构支持详解:amd64/arm64/ppc64le全平台部署方案

Docker官方镜像通过多架构支持实现了在不同硬件平台上的无缝部署,让开发者能够轻松构建跨平台应用。本文将详细介绍Docker官方镜像对amd64、arm64、ppc64le等架构的支持情况及全平台部署方案。 ## 支持的架构类型 Docker官方镜像支持多种主流架构,满足不同硬件环境的需求。从[versions.json](https://link.gitcode.com/i/38f3086

gitblog_00241的博客 807

如何在30分钟内实现Docker多架构镜像自动化构建?Buildx实战教程来了

快速掌握Docker Buildx构建多架构镜像(ARM64+AMD64+RISC-V)方法,实现跨平台镜像自动化编译。适用于边缘计算、混合架构部署场景,无需多台物理机,一键生成多架构镜像,提升发布效率,值得收藏。

SimCompile的博客 1005

揭秘Docker跨平台镜像实现原理:如何用Buildx构建ARM与AMD镜像并秒级部署

掌握Docker跨平台镜像构建秘诀,轻松实现ARM与AMD架构无缝部署。本文详解如何通过Buildx创建多架构镜像,支持CI/CD自动化发布,提升部署效率。涵盖原理剖析、实操步骤与最佳实践,助力开发者统一镜像管理,值得收藏。

FuncLens的博客 985

多架构镜像构建与发布实战:x86\_64 与 arm64 并存解决方案

随着 ARM 架构在云原生、移动与边缘计算场景中的快速普及,多架构镜像的构建能力成为现代交付体系的必备能力。本文聚焦在 x86\_64 与 arm64 架构并存的工程实践中,围绕 Docker Buildx 工具链、QEMU 虚拟化支持、Manifest 多架构推送与 CI 构建兼容性问题展开系统讲解。内容以真实可复现的构建场景为主,提供跨平台镜像发布的标准化实战路径。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1853

【Docker Buildx多架构构建终极指南】:手把手教你一键构建ARM+AMD跨平台镜像

掌握Docker Buildx 构建多架构镜像(ARM+AMD),轻松实现跨平台部署。本文详解交叉编译原理、QEMU模拟与Buildx配置,覆盖CI/CD、树莓派及云原生场景,一键生成多架构镜像,提升开发效率,值得收藏。

LearnFlow的博客 832
上一篇: 如何用Buildx构建轻量高效的多架构镜像?90%工程师忽略的细节曝光
下一篇: 为什么你的LangChain在Docker中总是超时?,深入剖析并发模型与资源竞争
CompiWander
博客等级 码龄1年 168粉丝 1980原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值