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 <builder_name> --driver <docker_driver> --config <config_toml># 创建镜像
$ docker buildx build --platform linux/amd64,linux/arm64 -t REPOSITORY:TAG -f <Dockerfile> . <option># 其中,常用option有
--push:会将构建好的镜像推送到镜像仓库
--load:会将构建好的镜像 load 到本地,不支持 load 多架构镜像,需要分开构建

Docker 开启 buildx 多CPU架构镜像制作相关推荐

  1. docker使用buildx构建不同架构镜像

    启用 buildx 插件 要想使用 buildx,首先要确保 Docker 版本不低于 19.03,同时还要通过设置环境变量 DOCKER_CLI_EXPERIMENTAL 来启用.可以通过下面的命令 ...

  2. docker buildx 构建arm64架构镜像

    文章目录 buildx测试 前提条件 安装 构建镜像 推送http私库问题 docker容器里运行docker buildx 在x86架构下如何打包arm64架构的镜像,docker buildx 是 ...

  3. docker 的安装以及简单centos镜像制作、启动

    1.安装docker [root@iZ2ze82p1dogve7neb5tuoZ ~]# yum install docker 2.查看 docker 是否成功 [root@iZ2ze82p1dogv ...

  4. 【Docker系列】 Docker 多架构支持 和 Docker Buildx 构建多架构

    Docker 的多架构支持 docker自适应了CPU的架构 会自动选择架构的版本 镜像 多架构的标签,会自动选择适合的标签. 使用 buildx 构建多架构镜像 Windows和Mac的桌面版Doc ...

  5. 巧用 Docker Buildx 构建多种系统架构镜像

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! Docker Buildx 是一个 Docker CLI 插件,其扩展了 Docker 命令,支持 Moby Bu ...

  6. docker中使用golang:alpine镜像制作开启goweb的dockerfile

    docker中使用golang:alpine镜像制作开启goweb的dockerfile go的web代码 package mainimport("net/http""f ...

  7. Docker架构部署及镜像制作,免费容器云体验

    前面的文章,我已经介绍了很多关于云原生.容器技术的相关知识和市场趋势等内容.说到云原生,就有那么些关键词:Kubernetes.Docker.Istio.IDE等等. 今天这篇文章,就想来聊聊Dock ...

  8. docker镜像制作(二)——构建企业镜像LAMP+BBS

    docker镜像制作(二)--构建企业镜像LAMP+BBS 一.LAMP概述 二.进行搭建 1.启动基础镜像容器 2.容器中优化yum源,并安装软件 3.软件初始化 ①.ssh的开启 ②.mysql的 ...

  9. Docker 学习笔记(Docker 架构 / 镜像 / 容器 / 常用命令 / Dockerfile / 镜像仓库)

    Docker 1. Docker 入门 1.1 Docker 是什么 1.2 Docker 和 虚拟机 1.3 镜像 容器 仓库 1.4 Docker 架构 1.5 Docker 安装 1.6 doc ...

最新文章

  1. 查找无序数组中第K大的数
  2. 架构之美(china-pub全国独家首发)
  3. CNC加工中心刀柄类型
  4. Linux管道的原子性,管道机制
  5. python拿来干嘛-Python是什么 Python的用处
  6. python编程入门指南 代码库在哪下-致Python初学者 Anaconda入门使用指南完整版
  7. 【项目管理】聊聊项目管理几点实践和理解(1)
  8. C语言 二维数组复制、清零及打印显示
  9. PW Live直播 | 清华大学​高天宇:对比学习及其在NLP中的应用
  10. Windows11——Modern Standby(现代待机) S0改Suspend to RAM(待机到内存)S3睡眠解决方案
  11. BZOJ3133[Baltic2013]ballmachine
  12. 二分图的最大匹配问题
  13. COJ 1700:联通与次联通
  14. “编程能力差,90%输在了这点上!”谷歌AI专家:其实你们都是瞎努力
  15. Go 语言为什么能成功?
  16. 关于Unity中关节的使用(一)
  17. ThinkPHP完美实现分页和美化
  18. 计算机网络故障排查,计算机网络故障诊断和排除方法
  19. 大龄程序员的4年生涯
  20. android安装包解析错误

热门文章

  1. C/C++经典项目实战:用C++制作围棋游戏,你也可以开发属于自己的游戏了!
  2. win 10 修改 windows 默认提示音
  3. TensorRT及PyCUDA安装记录
  4. 【】拉手网CEO吴波
  5. POJ 6264:走出迷宫
  6. 纵横网络靶场刷题记录
  7. 部落冲突-家乡资源建筑介绍(建筑工人小屋、圣水收集器、圣水瓶、金矿、储金罐、暗黑重油钻井、暗黑重油罐、建筑大师小屋)
  8. 概率论【合集】--猴博士爱讲课
  9. android xml 小圆点,如何在android xml可绘制文件中定义一个圆形状?
  10. ucos ii 46个系统API函数解析 .