位置: IT常识 - 正文

Docker镜像多架构构建(docker运行多个镜像)

编辑:rootadmin
Docker镜像多架构构建

推荐整理分享Docker镜像多架构构建(docker运行多个镜像),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:docker from多个镜像,docker镜像分层结构,docker多个镜像运行在一个实例,docker多个镜像,docker多个镜像运行在一个实例,docker多镜像构建,多个docker镜像合并有什么用,docker多镜像构建,内容如对您有帮助,希望把文章链接给更多的朋友!

目前arm系统越来越常见,对镜像的多架构需求也越来越大。对于同一个镜像,最简单的办法就是在amd64或arm机器上build后通过不同的tag进行区分,比如 nginx:v1-amd64 、 nginx:v1-arm64 ,但这种方式比较丑陋,而且没有对应架构的机器用来构建怎么办?

目前最新的办法就是使用buildx来进行构建,不过这个特性目前默认是没启用的,需要在docker的配置文件中添加 “experimental”: true 后重启docker服务生效。

首先执行下面的命令让amd64的机器也可以构建arm的镜像:

docker run --rm --privileged tonistiigi/binfmt:latest --install all

然后创建一个新的build实例:

docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master

这样准备工作就全都做好了。

接下来以一个kubebuilder命令创建的operator项目默认的Dockerfile为例:

# Build the manager binaryFROM --platform=$TARGETPLATFORM golang:1.16 as builderARG TARGETOS TARGETARCHWORKDIR /workspace# Copy the Go Modules manifestsCOPY go.mod go.modCOPY go.sum go.sum# cache deps before building and copying source so that we don't need to re-download as much# and so that source changes don't invalidate our downloaded layerRUN go mod download# Copy the go sourceCOPY main.go main.goCOPY api/ api/COPY controllers/ controllers/# BuildRUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -o manager main.go# Use distroless as minimal base image to package the manager binary# Refer to https://github.com/GoogleContainerTools/distroless for more detailsFROM --platform=$TARGETPLATFORM gcr.io/distroless/static:nonrootWORKDIR /COPY --from=builder /workspace/manager .USER 65532:65532ENTRYPOINT ["/manager"]Docker镜像多架构构建(docker运行多个镜像)

修改点有2个:

--platform=$TARGETPLATFORMGOOS=${TARGETOS} GOARCH=${TARGETARCH}

这些TARGET开头的变量可以在参考链接2里看到全部含义。

接下来使用这个文件进行构建:

docker buildx build -t hello/namespace/name:v1 -f Dockerfile . --platform linux/amd64,linux/arm64 --push

注意这里的 buildx 、 --platform 参数后面跟随需要构建的版本、以及 --push ,buildx构建的多架构镜像要么使用这个参数push到镜像仓库,要么使用 --load 加载到本地,不可省略。

构建完成后就会生成相应的多架构镜像了,可以使用 docker manifest inspect 来进行验证,比如:

docker manifest inspect hello/namespace/name:v1{ "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", "manifests": [ { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 1367, "digest": "sha256:a7b99854e13939e3beaf21c1da8b4654022018eda9f438155b18ae16eeff49a5", "platform": { "architecture": "amd64", "os": "linux" } }, { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 2169, "digest": "sha256:844885928813685ffa8c5ea4c6e9e7a09d95ac79e417afae0be7b73086762cfd", "platform": { "architecture": "arm64", "os": "linux" } } ]}

可以看出确实是生成了多个架构的镜像,使用时直接在不同架构的机器上pull就会自动下载对应的架构镜像了。或者也可以使用 docker pull --platform arm64|amd64 xxxxx 来指定拉取镜像的架构。

对于某些没有办法使用buildx的场景,我们可以手动build不同架构的镜像,然后再手动创建manifest,比如:

# 指定拉取amd64架构docker pull --platform amd64 gcr.io/distroless/static:nonroot# 重新打tagdocker tag 9ef34 hello/ns/static:nonroot-amd64# 推送docker push hello/ns/static:nonroot-amd64# 指定拉取arm64架构docker pull --platform arm64 gcr.io/distroless/static:nonroot# 重新打tagdocker tag 91714 hello/ns/static:nonroot-arm64# 推送docker push hello/ns/static:nonroot-arm64## 制作manifestdocker manifest create hello/ns/static:nonroot hello/ns/static:nonroot-amd64 hello/ns/static:nonroot-arm64docker manifest push hello/ns/static:nonrootdocker manifest rm hello/ns/static:nonroot

重点是最后3行,push manifest后使用就和第一种方法一样了。

另外如果想进行多架构构建有几个注意点:

yum|apt install

其他 查看镜像仓库里都有哪些镜像:

curl -u "用户名":"密码" -X GET http://镜像地址:5000/v2/_catalog?n=2000 | python -m json.tool

查看镜像有哪些tag:

curl -u "用户名":"密码" -X GET http://镜像地址:5000/v2/命名空间/镜像名称/tags/list | python -m json.tool
本文链接地址:https://www.jiuchutong.com/zhishi/298364.html 转载请保留说明!

上一篇:滚动条基本样式设置(滚动条基本样式有哪些)

下一篇:基于Java+SpringBoot+vue+element驾校管理系统设计和实现

  • 5crnimo模具钢(5c 5s)(5crnimo模具钢的用途)

    5crnimo模具钢(5c 5s)(5crnimo模具钢的用途)

  • win7任务管理器快捷键(win7任务管理器没有详细信息)

    win7任务管理器快捷键(win7任务管理器没有详细信息)

  • 因特指纹锁怎么改密码(因特指纹锁怎么进入管理模式)

    因特指纹锁怎么改密码(因特指纹锁怎么进入管理模式)

  • 如何删除苹果手机icloud照片(如何删除苹果手机购买记录)

    如何删除苹果手机icloud照片(如何删除苹果手机购买记录)

  • 转移到ios无法迁移原因(转移到ios无法迁移照片)

    转移到ios无法迁移原因(转移到ios无法迁移照片)

  • 华为nova7和vivox50对比(华为nova7和vivos16哪个好)

    华为nova7和vivox50对比(华为nova7和vivos16哪个好)

  • 抖音共同联系人准确吗(抖音共同联系人怎么让别人看不到)

    抖音共同联系人准确吗(抖音共同联系人怎么让别人看不到)

  • 小米10青春版防水吗(小米10青春版防抖吗)

    小米10青春版防水吗(小米10青春版防抖吗)

  • 10代cpu什么时候出(10代cpu什么时候下架)

    10代cpu什么时候出(10代cpu什么时候下架)

  • 快手怎么看别人的粉丝(快手怎么看别人浏览的足迹)

    快手怎么看别人的粉丝(快手怎么看别人浏览的足迹)

  • 电信卡数据漫游什么意思(联通宽带登录)

    电信卡数据漫游什么意思(联通宽带登录)

  • 打电话为什么总是关机状态(打电话为什么总是自动断?)

    打电话为什么总是关机状态(打电话为什么总是自动断?)

  • 苹果11听筒也是扬声器吗(苹果11的通病听筒)

    苹果11听筒也是扬声器吗(苹果11的通病听筒)

  • iphone8有没有3dtouch(Iphone8有没有nfc)

    iphone8有没有3dtouch(Iphone8有没有nfc)

  • 安装宽带要多久(师傅上门安装宽带要多久)

    安装宽带要多久(师傅上门安装宽带要多久)

  • 手机怎么设置快捷方式(手机怎么设置快速录音)

    手机怎么设置快捷方式(手机怎么设置快速录音)

  • 华为打电话黑屏怎么调(华为打电话黑屏感应设置怎么关闭)

    华为打电话黑屏怎么调(华为打电话黑屏感应设置怎么关闭)

  • 腾讯大王卡能用拼多多吗(腾讯大王卡能用的软件)

    腾讯大王卡能用拼多多吗(腾讯大王卡能用的软件)

  • 怎么把图片变小于20kb(怎么把图片变小打印出来)

    怎么把图片变小于20kb(怎么把图片变小打印出来)

  • cun aloo是荣耀几(荣耀alooa是华为什么型号)

    cun aloo是荣耀几(荣耀alooa是华为什么型号)

  • 微信公众平台开发有啥技术(微信公众平台登录入口)

    微信公众平台开发有啥技术(微信公众平台登录入口)

  • 安卓手机怎么连接carplay(安卓手机怎么连车机)

    安卓手机怎么连接carplay(安卓手机怎么连车机)

  • pccnt.exe是什么进程 pccnt进程查询(电脑cn是什么意思)

    pccnt.exe是什么进程 pccnt进程查询(电脑cn是什么意思)

  • command命令  调用并执行指定的命令(调出command命令窗口)

    command命令 调用并执行指定的命令(调出command命令窗口)

  • 一般纳税人的进销项税怎么做分录
  • 公司欠款利息收入需要交增值税吗?
  • 一般纳税人什么情况可以开3%的发票
  • 凭证附件的粘法
  • 设备采购及安装属于工程还是货物
  • 房屋合同印花税税率属于个人交的吗
  • 咨询费开发票选哪一项
  • 分公司的所得税怎么申报
  • 农产品收购发票可以跨区域开吗
  • 红字信息表跨月了还能开吗
  • 去年暂估的成本,汇算前收到的少,红冲全部暂估吗
  • 代付其他公司货款会计分录
  • 小规模和一般纳税人的区别
  • 进料余料结转的征免方式
  • 怎样查询单位上月社保缴纳情况
  • 合同期限3年
  • 借款合同 增值税
  • 实收资本印花税怎么申报税目
  • 2018年个体工商户增值税起征点
  • 帮客户采购会计分录
  • 劳动生产总值计算公式.doc
  • 自然人税收管理系统扣缴客户端app
  • 银行手续费和汇率的关系
  • 1697509310
  • 企业关闭时国税、地税注销需要哪些手续,时间是多长?
  • 增值税抄税报税流程2021
  • 民非企业缴纳税额怎么算
  • 管理费用劳务费包括什么
  • 劳务报酬怎么申报个税电子税务
  • 员工 意外保险
  • 应付账款的暂估入账
  • 企业对外股权投资涉及税收
  • 增值税要不要计入固定资产的成本中?
  • 融资租入的设备为什么属于资产
  • 广告公司的工程师好做吗
  • 暂估成本会计分录
  • 截取字符串php
  • 会计账务处理年限规定
  • 超级本轻薄本
  • 待抵扣进项税额什么意思
  • 微信支付php开发流程
  • 防抖节流实现原理
  • 收到退税款怎么做账
  • 工程发票可以开清单吗?
  • excel表格复杂表头
  • 已抵扣增值税进项税额
  • 总分公司企业所得税如何申报缴纳
  • 清包工一般计税如何开票
  • 购入已提足折旧的固定资产账务处理
  • 合伙企业要不要每月做账?报税是不是与一般的有限公司一样,每月申报纳税吗?
  • 生产加工费税率
  • 商品流通环节包括
  • 小微企业不用缴纳社保可以吗现在
  • 误餐补助标准国家规定
  • 商业企业销售摩托车需不需要征收消费税
  • 会计往来账如何记账
  • 账本页面设置
  • 坏账损失的核算方法包括
  • 如何给电脑重装系统win7系统
  • ubuntu下安装deb文件
  • linux挂载windows共享文件命令
  • win10系统自带
  • mac如何修改
  • mac怎么卸载苹果系统
  • 虚拟机centos7无法启动
  • win10更新中重启会怎么样
  • 怎么提升win7性能
  • Android Eclispe ADT环境搭建(集成版Eclipse)
  • linux 压缩解压缩
  • node.js教学
  • Node.js中的事件循环是什么意思
  • nodejs搭建个人博客网站
  • ndk dose not contain any platform
  • javascript getattribute
  • jquery.js插件
  • javascript如何禁用
  • 纳税申报指什么意思
  • 江苏 国税
  • 发票专用章盖在哪里
  • 船舶吨税税收优惠口诀
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设