[转帖]【教程】如何在不同架构打包Docker镜像
https://docs.qsnctf.com/qsnctf/37674.html
前言

大家在使用Docker的时候经常会遇到一个问题,就是受用机和本级不是同一架构。就比如小编使用的就是新版本的MacOS,使用了ARM架构,与目前仍占据主流的AMD64不同,所以没有办法很好的在AMD架构中使用。这时候就需要在ARM架构上打包成AMD64架构的Docker镜像。
解决方案
其实很简单,我们只需要使用Docker中的buildx插件即可。要想使用 buildx,首先要确保 Docker 版本不低于 19.03,同时还要通过设置环境变量 DOCKER_CLI_EXPERIMENTAL 来启用。可以通过下面的命令来为当前终端启用 buildx 插件:
1 |
export DOCKER_CLI_EXPERIMENTAL=enabled |
验证是否开启:
1 |
docker buildx version |

如果在某些系统上设置环境变量 DOCKER_CLI_EXPERIMENTAL 不生效(比如 Arch Linux),你可以选择从源代码编译:
1 |
export DOCKER_BUILDKIT=1 |
解决过程
从默认的构建器切换到多平台构建器
Docker 默认会使用不支持多 CPU 架构的构建器,我们需要手动切换。
先创建一个新的构建器:
1 |
docker buildx create --use --name mybuilder |
启动构建器:
1 |
docker buildx inspect mybuilder --bootstrap |
查看支持架构:
1 |
docker buildx ls |
结果如下:
1 |
moxin@moxindeMacBook-Pro ~ % docker buildx ls |
构建多平台镜像
下面的命令是将当前目录下的Dockerfile构建成一个支持arm、arm64、amd64的语句:
1 |
docker buildx build -t qsnctf/testdocker --platform=linux/arm,linux/arm64,linux/amd64 . --push |
如果想将镜像保存到本地,你需要将type设置为Docker,但是不同环境就需要分开编译:
1 |
docker buildx build -t qsnctf/testdocker --platform=linux/arm -o type=docker . |
[转帖]【教程】如何在不同架构打包Docker镜像的更多相关文章
- BI系统打包Docker镜像及部署的技术难度和实现
BI系统打包Docker镜像及部署的技术难度和实现 随着容器化技术盛行,Docker在前端领域也有着越来越广泛的应用:传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置n ...
- 将spring cloud打包docker镜像
简介:用spring cloud构建微服务后,微服务肯定要docker镜像化然后用rancher等可视化工具管理,这就是走完了一套基本的流程,现在简单介绍下 环境:两台centos7.x的服务器,一台 ...
- 【Docker】(5)---springCloud注册中心打包Docker镜像
[Docker](5)---springCloud注册中心打包Docker镜像 上一篇文章讲了将镜像推送到远处私有仓库,然后再从私有仓库拉取该镜像的过程.而这里的镜像是直接从Docker拉取的. 所以 ...
- 将php项目打包docker镜像
简介:有时候我们需要将php的项目打包成docker镜像,这里介绍下 思路:我们php和apache结合一个镜像实现php项目的访问,mysql是一个单独的镜像 步骤: 1.首先我们在本地测试好自己的 ...
- win10 下springcloud打包docker镜像部署。
1:建一个最简单的springcloud应用. 2:在根目录下新建dockerfile,文件如下: FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE ...
- .NetCore打包docker镜像
1..NetCore 项目打包成Docker 镜像 1.1创建一个.NetCore web项目 项目名为 testmvc 此处用的是.NetCore2.1版本 1.2并且在program里面设置 ...
- 把java(springboot)程序打包docker镜像
前言:要在docker运行java(jar包)程序,就要把程序打包成docker镜像(以下简称镜像),可以先理解为镜像就是jar包 打包需要程序代码,java本身的打包环境(包括jdk和maven), ...
- Azure Devops实践(5)- 构建springboot项目打包docker镜像及容器化部署
使用Azure Devops构建java springboot项目,创建镜像并容器化部署 1.创建一个springboot项目,我用现有的项目 目录结构如下,使用provider项目 在根目录下添加D ...
- BI系统打包Docker镜像及容器化部署的具体实现
在过去的几年中,"云"作为明星热词站在了各种新潮技术之中,你可能使用过,但说不清它的原理:或者是没用过,但听过它的大名:也可能连它的名字都没听过,但你对这只蓝色鲸鱼一定十分眼熟.作 ...
- paas架构之docker——镜像管理
1. 镜像管理 1.1. 列出镜像 Sudo docker images 1.2. 查看镜像 Sudo docker images xxxx 1.3. 拉取镜像 Sudo docker pull ub ...
随机推荐
- Pikachu漏洞靶场 Sql Inject(SQL注入)
SQLi 哦,SQL注入漏洞,可怕的漏洞. 文章目录 SQLi 数字型注入(post) 字符型注入(get) 搜索型注入 xx型注入 "insert/update"注入 inser ...
- 文心一言 VS 讯飞星火 VS chatgpt (173)-- 算法导论13.3 2题
二.用go语言,将关键字41.38.31.12.19.8连续地插入一棵初始为空的红黑树之后,试画出该结果树. 文心一言: 首先,我们需要了解红黑树的性质.红黑树是一种自平衡二叉查找树,其中每个节点要么 ...
- 前端系列:正则表达式RegExp详解
目录 正则创建 匹配方法 元字符 字符集合 边界 分组 数量词汇 匹配模式 RegExp 方法特性 正则创建 字面量创建 const str = 'asdf123sds3234' const rege ...
- 中文语音识别转文字的王者,阿里达摩院FunAsr足可与Whisper相颉顽
君不言语音识别技术则已,言则必称Whisper,没错,OpenAi开源的Whisper确实是世界主流语音识别技术的魁首,但在中文领域,有一个足以和Whisper相颉顽的项目,那就是阿里达摩院自研的Fu ...
- mx master 的国产平替 keychron m6 使用体验
背景 之前在 Mac 系统用mx master3遇到的问题 这篇文章中提到过三点问题,前两点在更换了驱动软件,升级了 macOS 系统之后都解决了,但第三点自动休眠的问题一直无法解决,于是一直想找一个 ...
- GaussDB for DWS:内存自适应控制技术总结
1.技术背景 在SQL语句复杂.处理数据量大的AP场景下,单个查询对内存的需求越来越大,多个语句的并发很容易将系统的内存吃满,造成内存不足的问题.为了应对这种问题,GaussDB for DWS引入了 ...
- 为什么MySQL单表不能超过2000万行?
摘要:MySQL一张表最多能存多少数据? 本文分享自华为云社区<为什么MySQL单表不能超过2000万行?>,作者: GaussDB 数据库 . 最近看到一篇<我说MySQL每张表最 ...
- 玩转LiteOS组件:Openexif
摘要:OpenExif是用于访问Exif格式的JPEG图像文件的面向对象的库. 本文分享自华为云社区<LiteOS组件尝鲜-玩转Openexif>,作者: W922 . 基本信息 Exif ...
- 使用appuploader工具发布证书和描述性文件教程
使用APPuploader工具发布证书和描述性文件教程 之前用AppCan平台开发了一个应用,平台可以同时生成安卓版和苹果版,想着也把这应用上架到App Store试试,于是找同学借了个苹果开发者账号 ...
- 为提高 SDLC 安全,GitHub 发布新功能|GitHub Universe 2022
GitHub Universe 2022于上周举办.在此次大会上,Github 公布了开源软件状态的最新报告,报告中的统计数据显示,90% 的公司都在使用开源,现在 GitHub 上有9400万用户, ...