网站怎样多语言,网站建设 类,网页设计作业怎样发原文件,做网站图片知识一、Docker Buildx 功能介绍
docker buildx 是 Docker 提供的一个增强版构建工具#xff0c;支持更强大的构建功能#xff0c;特别是在构建多平台镜像和高效处理复杂 Docker 镜像方面。
1.1 主要功能
多平台构建支持
使用 docker buildx#xff0c;可以在单台设备上构建…一、Docker Buildx 功能介绍
docker buildx 是 Docker 提供的一个增强版构建工具支持更强大的构建功能特别是在构建多平台镜像和高效处理复杂 Docker 镜像方面。
1.1 主要功能
多平台构建支持
使用 docker buildx可以在单台设备上构建多平台的镜像如 linux/amd64、linux/arm64 等。构建方式无需实际运行在目标架构上借助 QEMU 实现跨平台模拟
分布式和并行构建
buildx 支持在分布式环境下进行并行构建将构建任务分配到多台设备。支持多个后端驱动如 Docker 本地引擎、Kubernetes 集群等可以根据需求选择构建环境。
缓存导入与导出
在构建镜像时可以导入和导出缓存以提升构建效率尤其在 CI/CD 环境中。
镜像的直接推送
构建完成的镜像可以直接推送到 Docker Registry无需本地保存。
1.2 Buildx 构建演示
下面是一个简单的 Dockerfile它创建了一个非常小的镜像并且可以用来测试 docker buildx 对 ARM 和 x86 平台的支持
# 使用最小的Alpine镜像
FROM --platform$BUILDPLATFORM alpine:latest# 设置工作目录
WORKDIR /app# 简单的命令输出平台信息
RUN echo Building for platform: $BUILDPLATFORM# 默认执行命令
CMD [echo, Hello from Docker!]解释
FROM --platform$BUILDPLATFORM alpine:latest使用 alpine:latest 镜像并根据 docker buildx 的平台选择功能自动切换平台x86 或 ARM。RUN echo Building for platform: $BUILDPLATFORM在镜像构建时输出当前的构建平台信息。CMD [echo, Hello from Docker!]构建并运行容器时执行的简单命令。
1.2.1 创建一个Buildx 构建实例 用于管理和执行 Docker Buildx 的构建任务 docker buildx create --name srebro切换到名为 srebro 的 Buildx 构建实例并将 srebro 设置为默认的构建器 docker buildx use srebro初始化并启动一个 buildx 容器 docker buildx inspect --bootstrap1.2.2 构建多平台镜像 这里我使用 cnb 的容器仓库作为镜像的存放仓库 登录 cnb 容器仓库 $ docker login -u cnb docker.cnb.cool构建镜像并推送镜像仓库这里同时构建 x86 和 arm 的镜像 $ docker buildx build --platform linux/amd64,linux/arm64 -t docker.cnb.cool/srebro/docker-images/hello:latest --push .可以看到镜像已经成功的推送到 cnb 镜像仓库上了有 arm 和 x86 两种镜像 二、如何使用CNB 构建多平台镜像
CNB 云原生构建平台这里我不详细介绍用过 coding 的人 应该会很熟悉我知道的是原班 coding 和 之前 QQ 空间的 大佬 一起联合 做的一个 云原生构建平台。https://cnb.cool/
2.1 CNB 创建一个代码仓库
步骤忽略自行探索官方文档写的很详细
2.2 在CNB上构建一个 Redis 多平台容器镜像 仓库示例地址 https://cnb.cool/srebro/redis 如何在 cnb 上构建多平台镜像官方 demo https://cnb.cool/examples/showcase 构建过程文件 https://cnb.cool/srebro/redis/-/blob/main/.cnb.yml 自定义构建按钮 https://cnb.cool/srebro/redis/-/blob/main/.cnb/web_trigger.yml 一键构建 嘎嘎发射
构建结果 镜像仓库地址
这里其实也是用到了docker 的 manifest 技术。
Docker 的 manifest 是镜像的元数据文件包含镜像的层、配置、平台信息等。它是管理和存储 Docker 镜像的关键部分特别是在处理多平台构建时manifest 使得 Docker 能够根据平台选择正确的镜像版本。 2.3 使用CNB回传镜像
懂得都懂墙外的镜像 在国内基本上都很难拉取不过也有一些解决方法比如github 的actions不过往往 github 的网址都要打开好久不是很友好
那何尝不如去 试试 CNB 的 呢 他们的构建机器 有 arm 的 也有x86 的构建的速度 也挺快我听说都是做了加速的。搞个自定义参数流水线构建镜像并直接保存在CNB镜像仓库上了岂不是很方便或者说调用 CNB 的 API 接口远程构建 等等。。。。。这里不展开了 自行脑补