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

使用buildx构建多架构平台镜像

1. 查看buildx插件信息

比较新的docker-ce版本默认已经集成了buildx插件

[root@docker ~]# docker buildx version
github.com/docker/buildx v0.11.2 9872040
[root@docker ~]#

2. 增加多平台镜像构建支持

通过tonistiigi/binfmt:latest初始化一个基于容器的构建环境(依据官方说明):

[root@docker ~]# docker run --privileged --rm tonistiigi/binfmt --install all
Unable to find image 'tonistiigi/binfmt:latest' locally
latest: Pulling from tonistiigi/binfmt
8d4d64c318a5: Pull complete
e9c608ddc3cb: Pull complete
Digest: sha256:66e11bea77a5ea9d6f0fe79b57cd2b189b5d15b93a2bdb925be22949232e4e55
Status: Downloaded newer image for tonistiigi/binfmt:latest
installing: mips64le OK
installing: mips64 OK
installing: ppc64le OK
installing: arm64 OK
installing: arm OK
installing: s390x OK
installing: riscv64 OK
{"supported": ["linux/amd64","linux/arm64","linux/riscv64","linux/ppc64le","linux/s390x","linux/386","linux/mips64le","linux/mips64","linux/arm/v7","linux/arm/v6"],"emulators": ["qemu-aarch64","qemu-arm","qemu-mips64","qemu-mips64el","qemu-ppc64le","qemu-riscv64","qemu-s390x"]
}
[root@docker ~]#

3. 创建构建器

构建器需要什么平台根据需要配置,这里只加了amd64和arm64:

# 创建名称为mybuilder的包含linux/amd64,linux/arm64架构的构建器
[root@docker ~]# docker buildx create --name=mybuilder --bootstrap --platform=linux/amd64,linux/arm64
[+] Building 4.3s (1/1) FINISHED=> [internal] booting buildkit                                                                                                                                     4.3s=> => pulling image moby/buildkit:buildx-stable-1                                                                                                                  3.7s=> => creating container buildx_buildkit_mybuilder0                                                                                                                0.6s
mybuilder
# 列出构建器
[root@docker ~]# docker buildx ls
NAME/NODE    DRIVER/ENDPOINT             STATUS  BUILDKIT             PLATFORMS
mybuilder    docker-containermybuilder0 unix:///var/run/docker.sock running v0.12.3              linux/amd64*, linux/arm64*, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
default *    dockerdefault    default                     running v0.11.6+616c3f613b54 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
[root@docker ~]#

4. 设置当前构建器

默认构建器是自带的default,需要设置成我们创建的mybuilder:

[root@docker ~]# docker buildx use mybuilder
[root@docker ~]# docker buildx ls
NAME/NODE    DRIVER/ENDPOINT             STATUS  BUILDKIT             PLATFORMS
mybuilder *  docker-containermybuilder0 unix:///var/run/docker.sock running v0.12.3              linux/amd64*, linux/arm64*, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
default      dockerdefault    default                     running v0.11.6+616c3f613b54 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
[root@docker ~]#

5. 构建并推送命令

构建镜像并推送到本地harbor仓库:

[root@docker ~]# docker buildx build \-t harbor.local/library/mysql:8.0.35 \--platform linux/amd64,linux/arm64 \--push

6. 从harbor查看镜像

可以看到多镜像的显示上多了一个类型目录的图标,可以点击查看不同架构情况:
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/477383.html

相关文章:

  • 宠物领养救助管理软件有哪些功能 佳易王宠物领养救助管理系统使用操作教程
  • Spring Boot中实现多数据源连接和切换的方案
  • 科技资讯|谷歌Play应用商店有望支持 XR 头显,AR / VR设备有望得到发展
  • 关于read/write 网络IO、硬盘IO的区别
  • vue2开发 对接后端(go语言)常抛异常情况以及处理方法汇总
  • LSTM:解决梯度消失与长期依赖问题
  • Kafka在大数据处理中的作用及其工作原理
  • w~自动驾驶~合集5
  • Java优先队列的使用
  • 20241105,LeetCode 每日一题,用 Go 实现两数之和的非暴力解法
  • mysql之命令行基础指令
  • 使用Django Channels实现WebSocket实时通信
  • 「Mac畅玩鸿蒙与硬件27」UI互动应用篇4 - 猫与灯的互动应用
  • Spring-Day4
  • C#-类:成员属性
  • qt QDragEnterEvent详解
  • Vue项目与IE浏览器的兼容性分析(Vue|ElementUI)
  • 【C++之STL】一文学会使用 string
  • 好用的办公套件--- ONLYOFFICE
  • Android View事件分发
  • 攻防世界GFSJ1229 Three
  • 2023 icpc杭州(M,J,D,G,H)
  • 在CentOS 7上安装Alist
  • 【C/C++】memcpy函数的模拟实现
  • 嵌入式开发之线程互斥
  • JavaScript 变量作用域与函数调用机制:var 示例详解
  • Linux(CentOS)安装 JDK
  • AI产品经理实战手册:策略、开发与商业化指南
  • 【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用
  • Linux之初体验