前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 构建多架构镜像并推送仓库

Docker 构建多架构镜像并推送仓库

作者头像
LinkinStar
发布2023-10-18 14:24:11
3910
发布2023-10-18 14:24:11
举报
文章被收录于专栏:LinkinStar's BlogLinkinStar's Blog

前言

原本多架构其实我还遇到的不算多,但自从苹果的 M1 出来之后 arm64 版本支持就变成了一个常态,所以会常遇到需要多架构镜像都构建的情况。以前的 docker 版本需要你去编写 manifest 很麻烦,而今天就说说如何使用 docker buildx 来同时构建多架构的镜像,其实现在已经非常方便了。

目标:构建出 amd64 和 arm64 的 docker 镜像

创建 builder

默认你在 docker build 的时候直接指定 --platform linux/arm64,linux/amd64 就会报错,告诉你需要使用 docker buildx 而前提是你需要有一个 builder

代码语言:javascript
复制
$ docker buildx create --name mybuilder --driver docker-container
$ docker buildx use mybuilder

Linux 非 arm 下可能需要你先安装 https://github.com/tonistiigi/binfmt#installing-emulators 以支持 arm 平台的打包

构建

其实到这里已经非常简单的,就和原来的构建命令差不多,只是需要指定对应构建的架构即可

代码语言:javascript
复制
docker buildx build --platform linux/amd64,linux/arm64 -t linkinstar/app:latest .

当然,如何想要将构建完成的镜像直接 push 到镜像仓库,也可以追加参数 --push

代码语言:javascript
复制
docker buildx build --platform linux/amd64,linux/arm64 -t linkinstar/app:latest . --push

可能存在的问题

由于国内网络环境的问题,可以尝试使用 https://github.com/docker-practice/buildx 实际中我使用时发现和官方的还是有区别,所以竟可能还是用官方的 builder,实在不行可以考虑更换

代码语言:javascript
复制
# 添加了镜像设置,建议在国内环境使用
# 网易云镜像 二选一
$ docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master

# 百度云镜像 二选一
$ docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master-baidu

$ docker buildx use mybuilder-cn
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 创建 builder
  • 构建
  • 可能存在的问题
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档