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

淮安做网站就找卓越凯欣建筑工程有限责任公司

淮安做网站就找卓越凯欣,建筑工程有限责任公司,东营做网站哪家好,网站后台登陆验证码不显示一、背景需求宿主机架构:x86_64目标平台:x86_64 ARM64镜像构建方式:通过 Jenkins 拉起容器 agent,在其中构建镜像,并推送至 Harbor构建工具链:docker buildx buildkit二、环境准备启用binfmt_misc//宿主机…

一、背景需求

  • 宿主机架构:x86_64

  • 目标平台:x86_64 + ARM64

  • 镜像构建方式:通过 Jenkins 拉起容器 agent,在其中构建镜像,并推送至 Harbor

  • 构建工具链:docker buildx + buildkit


二、环境准备

  1. 启用binfmt_misc

    //宿主机上执行
    #docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d //验证
    #ls /proc/sys/fs/binfmt_misc/
    python3.10  qemu-aarch64  qemu-arm  qemu-ppc64le  qemu-s390x  register  status
  2. 创建并使用多平台构建器

    //创建
    #docker buildx create --use --name crossbuilder//启动
    docker buildx inspect crossbuilder --bootstrap
  3. 查看当前使用的构建器及构建器支持的 CPU 架构

    #docker buildx ls
    NAME/NODE       DRIVER/ENDPOINT             STATUS  PLATFORMS
    crossbuilder *  docker-containercrossbuilder0 unix:///var/run/docker.sock running linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/arm64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
    default         dockerdefault       default                     running linux/amd64, linux/386


三、构建命令

最终可用的构建命令如下:

#docker buildx build  --no-cache --pull -t $tag --platform=linux/arm64,linux/amd64 --push .

说明

  • --push:直接推送至远端仓库(如 Harbor),否则 buildx 不会保留镜像(尤其是 manifest list 类型)

  • --platform:指定多平台架构

  • --load不要使用,它只支持单一平台(默认本地加载),不支持 manifest list(多架构)


四、遇到的坑与解决方式

1. error: docker exporter does not currently support exporting manifest lists

问题:你使用了 --load 参数来导入多架构镜像到本地。

解决:manifest list 镜像无法 --load,改为直接 --push

docker buildx build --platform=linux/amd64,linux/arm64 -t xxx --push .

2. error: failed to solve: granting entitlement network.host is not allowed by build daemon configuration

问题:你指定了 --network=host,但宿主机 Docker Daemon 未开放该权限。

解决:修改 /etc/docker/daemon.json,添加:

{"features": { "buildkit": true },"experimental": true,"builder": {"gc": {"enabled": true}},"entitlements": ["network.host"]
}

重启 Docker 后重试。


3. Harbor UI 中看不到两个架构

问题:Harbor UI 未展示 manifest list 的子镜像(可能和版本有关系),容易误以为只 push 了一个架构。

验证方法

#docker buildx imagetools inspect  harbor.yourdomain.com/daily/app:multi-platform
Name:      harbor.yourdomain.com/daily/app:multi-platform
MediaType: application/vnd.docker.distribution.manifest.list.v2+json
Digest:    sha256:9e12dfcf7a008c723372e94a3113d06ffe8e58df5d41c897b22ae152c592eba0Manifests:Name:      harbor.yourdomain.com/daily/app:multi-platform@sha256:dfd72556bb959c67ff6a27fe4082a590cc7d81373708691a505672ce564b84efMediaType: application/vnd.docker.distribution.manifest.v2+jsonPlatform:  linux/arm64Name:      harbor.yourdomain.com/daily/app:multi-platform@sha256:89d7f63a7bde2a17988455be05c5d126ac32de380224452945fa124a19df517fMediaType: application/vnd.docker.distribution.manifest.v2+jsonPlatform:  linux/amd64

确认 manifest list 已生成,说明构建成功。


4. --push 之后本地没有镜像

问题:这是 buildx 的设计,--push 会将构建产物直接上传 registry,不保留在本地(manifest list 类型本地也不能直接运行)。

解决:确认推送成功后,通过拉取测试:

docker pull --platform=linux/arm64 harbor.yourdomain.com/project/image:tag

或用 buildx imagetools inspect 验证。


五、Jenkins + Kubernetes Agent 中如何共享宿主机的 binfmt 能力

在 PodSpec 中挂载宿主机的 docker和buildx,示例如下

volumeMounts:- mountPath: "/usr/lib64/libltdl.so.7"name: "volume-3"readOnly: false- mountPath: "/usr/libexec/docker/cli-plugins/docker-buildx"name: "volume-5"readOnly: false- mountPath: "/var/run/docker.sock"name: "volume-2"readOnly: false- mountPath: "/usr/bin/docker"name: "volume-4"readOnly: falsevolumes:- hostPath:path: "/var/run/docker.sock"name: "volume-2"- hostPath:path: "/usr/bin/docker"name: "volume-4"- hostPath:path: "/usr/lib64/libltdl.so.7"name: "volume-3"- hostPath:path: "/usr/libexec/docker/cli-plugins/docker-buildx"name: "volume-5"

六、结语

docker buildx 是构建多平台镜像的现代化利器,但其行为与传统 docker build 不同,踩坑点较多,关于 --load--push 和 Harbor UI 展示方面容易让人困惑。

http://www.dtcms.com/wzjs/805554.html

相关文章:

  • 南京关键词网站排名对百度竞价排名的看法
  • 网站建设推广选哪家新手网站建设教程
  • 网站推广的常用方法有哪些?莱芜摩托车网站
  • 怎么做网站滑动图片部分h5大人室内设计网
  • 城阳网站制作微小店网站建设官网
  • 郑州 (网站建设网站开发工程师发展趋势
  • 网站负责人备案采集照小型网上商城系统
  • 做彩票网站是违法吗如何建网站做传奇网友
  • 建设网站要什么电脑做珠宝网站公司
  • 邯郸单位网站建设网站多少图片怎么做超链接
  • 专门做婚姻法的网站四川建设人才网官网
  • 有源码怎么在本地网站搭建无锡做食品网站的公司哪家好
  • ps兼职做网站微信小程序源码网站
  • 公众号视频网站怎么做有没有什么东西可以做网站
  • 佛山市品牌网站建设价格泰安东平房产信息网
  • 风险网站怎么解决方案合肥官网建设公司哪家好
  • 南宁百度网站推广ueeshop外贸建站公司
  • iis做网站视毕节建设公司网站
  • 地方网站如何做北京做网站的好公司
  • 个人网站模板制作运城做网站
  • 简约式网站做个网站大概多少钱
  • 自己做网站怎么租服务器2021企业公司大黄页
  • 做美团网站需要多少钱唐山企业网站模板建站
  • 苏州网站推广优化如何做自己的简历网站
  • 加拿大购物网站排名网站推广seo代理
  • 如何优化网站tkd如何做基金公司网站
  • 简洁网站首页模板沈阳旅游集团网站建设
  • 建设网站需要的步骤青岛商网站建设
  • 深圳网站空间购买wordpress 取消自豪
  • 淄博城乡建设局网站海沧做网站