Docker 开启 buildx 多CPU架构镜像制作
创始人
2024-03-31 03:41:20
0

Docker开启buildx多CPU架构镜像制作

    • buildx简介
    • 关于QEMU
    • 系统限制
    • 查看Linux内核版本
    • 查看Docker版本
    • Docker开启实验特性
    • 启用 binfmt_misc 来运行非本地架构 Docker 镜像
    • 检查 QEMU 处理程序来验证 binfmt_misc 设置是否正确
    • 创建并启用 Docker 多架构构建器
    • 常用语法

buildx简介

buildx 可用于在单个平台上实现跨 CPU 架构编译。

buildx 的实现依赖 QEMU (某开源模拟器),支持多种 CPU 架构,如 ARM、Power-PC 和 RISC-V。

需要注意:buildx推送镜像时,不会走主机的hosts文件,默认使用https协议

关于QEMU

QEMU 可以模拟一个完整的操作系统(开销较大)。QEMU还有一种用户态模式,基于 binfmt_misc 模拟目标硬件的用户空间,该模式可以创建轻量级的虚拟机(chroot 或者 容器),通过该方式提供多种平台的虚拟机,然后基于Dockerfile进行编译,平台不通,但Dockerfile是同一份。

系统限制

  • Linux 内核v4.8及更高
  • Docker v19.03及更高

查看Linux内核版本

$ uname -rs
Linux 5.4.219-1.el7.elrepo.x86_64

查看Docker版本

$ docker verson
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:05:12 2022
OS/Arch: linux/amd64
Context: default
Experimental: trueServer: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:03:33 2022
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0

Docker开启实验特性

vim /etc/docker/daemon.json
# 添加以下内容
{
"experimental": true
}

启用 binfmt_misc 来运行非本地架构 Docker 镜像

$ docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d

检查 QEMU 处理程序来验证 binfmt_misc 设置是否正确

$ ls -al /proc/sys/fs/binfmt_misc/
total 0
drwxr-xr-x. 2 root root 0 Oct 24 15:33 .
dr-xr-xr-x. 1 root root 0 Oct 24 15:29 ..
-rw-r--r--. 1 root root 0 Oct 24 16:38 qemu-aarch64
-rw-r--r--. 1 root root 0 Oct 24 16:38 qemu-arm
-rw-r--r--. 1 root root 0 Oct 24 16:38 qemu-ppc64le
-rw-r--r--. 1 root root 0 Oct 24 16:38 qemu-s390x
--w-------. 1 root root 0 Oct 24 15:33 register
-rw-r--r--. 1 root root 0 Oct 24 15:33 status

创建并启用 Docker 多架构构建器

# 创建构建器
$ docker buildx create --use --name builderx# 启动构建器
$ docker buildx inspect builderx --bootstrap# 查看构建器
$ docker buildx lsNAME/NODE  DRIVER/ENDPOINT                   STATUS     BUILDKIT        PLATFORMS
builderx *        docker-container
builderx0         unix:///var/run/docker.sock      running     v0.10.5          linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
default            docker
default            default                         running     20.10.18         linux/amd64, linux/386, linux/arm64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6

常用语法

# 创建构建器
$ docker buildx create --use --name  --driver  --config # 创建镜像
$ docker buildx build --platform linux/amd64,linux/arm64 -t REPOSITORY:TAG -f  . 

相关内容

热门资讯

货币政策工具加力支持 □ 本报记者 詹 超 【场景】 昆山开发区,苏州清陶动力科技有限公司车间的固态电池生产线嗡嗡作响,金...
我国继续实施更加积极的财政政策 经济日报北京12月28日讯(记者曾金华)记者从全国财政工作会议获悉,今年财政工作取得新成效,为推动完...
吴中区“三强化”促进法律服务业... 苏州市吴中区锚定“升级服务产业、优化营商环境、赋能高质量发展”核心目标,以政策为引领、平台为支撑、人...
央行:稳妥有序完善房地产信贷基... |2025年12月29日 星期一| NO.1 央行:稳妥有序完善房地产信贷基础性制度 12月26日,...
大金重工[002487]关于诉... 本版导读 2025-12-29 2025-12-29 2025-12-29 2025...
国务院国资委:完善国有资产管理... 国务院国资委党委书记、主任张玉卓在学习时报刊发文章《坚定不移做强做优做大国有企业和国有资本》。其中提...
“惠民政策落不到村”,紧抓!(... 本报记者 郑洋洋 “重点研究周武村党组织软弱涣散的问题,大家直奔主题,谈谈看法。”山西长治市潞城区店...
财政政策如何继续“更加积极” 记者从27日至28日举行的全国财政工作会议获悉:2026年要继续实施更加积极的财政政策,扩大财政支出...
落户政策居然考虑放开! 怎么,我能落户北京了? 大家好,我是孙少睡,这是我的第467篇楼市评论。 很多人的第一反应肯定是有没...
股市必读:ST泉为股东因涉嫌违... 截至2025年12月26日收盘,ST泉为(300716)报收于9.96元,下跌0.8%,换手率0.9...