前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用docker buildx打包发布多平台镜像

使用docker buildx打包发布多平台镜像

作者头像
用户2038589
发布2022-09-07 14:28:17
1.4K0
发布2022-09-07 14:28:17
举报
文章被收录于专栏:青青天空树青青天空树

个人比较喜欢影视作品,下载了大量的剧集视频,有些文件的命名不规范,就需要重新命名,之前是用的一款 renamer 客户端软件,用起来不太爽就自己做了个 bs 架构的重命名软件并开源在 github:open-renamer,为了方便自己和别人使用,也做成了 docker 镜像发布到了 dockerhub 中供别人使用,由于本人只有 x86 架构的设备,因此也就是有 x86 的镜像包,结果最近有人需要 arm 版的镜像,所以呢就来研究下怎么在 x86 上打 arm 的镜像。

目前 docker 已经直接支持多平台同时打包,不过需要 20 版本及以后的,同时还要开启实验特性。

注意:本文 docker 版本基于 20.10.5

开启 docker 实验特性

首先需要开启 docker 的实验特性,在 docker 配置文件/etc/docker/daemon.json中加入"experimental": true,如下:

代码语言:javascript
复制
{
  "registry-mirrors": [""],
  "experimental": true
}

然后执行docker version,当看到下面的内容说明开启成功了:

docker实验特性
docker实验特性

安装 buildx 插件

首先检查是否已经安装了 buildx 插件,命令:docker buildx version,看到如下内容说明已经有 buildx 了

如果没有:

  1. 创建插件目录mkdir ~/.docker/cli-plugins
  2. 下载插件到上面的目录中wget -O ~/.docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/v0.8.2/buildx-v0.8.2.linux-amd64.注意这一步需要选择自己对应平台的二进制包
  3. 授予执行权限chmod +x ~/.docker/cli-plugins/docker-buildx

官方安装文档:点击跳转

使用 dockerx 打包镜像

假设 Dockerfile 内容如下:

代码语言:javascript
复制
FROM node:lts-buster-slim
WORKDIR /app
RUN mkdir /app && echo "hello,world">/app/hello.txt
CMD ["cat", "/app/hello.txt"]

注意:当打包到多平台时要注意 FROM 的镜像要存在于你指定的平台中,另外其中的所有操作都要能在多平台中执行

然后创建一个构建实例。默认情况下 buildx 不支持多平台打包

代码语言:javascript
复制
# 创建构建实例。通俗的讲,就是创建用于执行构建任务的节点
docker buildx create --use --name build-node-example --driver docker-container
docker buildx ls

然后就可以开始打包了

代码语言:javascript
复制
docker buildx build -t fleyx/open-renamer:0.8 --platform linux/amd64,linux/arm64 --push .

命令解释:

  • -- platform:指定目标平台用","分隔
  • -- push:将输出结果推送到远程。默认情况下多平台打包的镜像无法通过docker images查看

推送到远程要先用docker login命令登录

然后到 hub.docker 查看刚刚推送的镜像就可以看到多版本支持了:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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