返回顶部
首页 > 资讯 > 服务器 >DockerBuildx构建多平台镜像的实现
  • 443
分享到

DockerBuildx构建多平台镜像的实现

2024-04-02 19:04:59 443人浏览 薄情痞子
摘要

目录写在前边构建环境启用BuildX安装qemu-user-static通知Docker使用qemu创建Buildx构建容器调整Dockerfile接收平台相关参数同时构建X86_6

写在前边

记录一下前阵子在X86_64平台使用Docker Buildx构建多平台镜像的办法,包含但不限于构建ARM镜像。

构建环境

软件名版本
ubuntu18.04.2 LTS
Docker20.10.16

Ubuntu 和 Fedora 安装构建环境比较方便,没有内核版本低导致的一系列问题。如果想使用Centos请参考其他文档。

启用BuildX

Docker Buildx 是 Docker的CLI插件,来自于Moby BuildKit 。自从Docker 18.06 开始这个插件直接集成到了Docker build 中,直至成文之日,它仍处于Experimental状态,所以想使用它需要显式地开启它。

启用 Buildx 有两种方式:

临时激活:在执行构建命令前添加环境变量,如 DOCKER_BUILDKIT=1 docker buildx build -t 镜像:标签 --platfORM linux/arm64 .

配置文件激活:

vim /etc/docker/daemon.JSON
#添加配置
{
    "experimental": true
}

安装qemu-user-static

qemu-user-static 用来模拟多平台环境,它依赖于binfmt-support,所以这两者都要安装。

sudo apt install -y qemu-user-static binfmt-support

通知Docker使用qemu

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

创建Buildx构建容器

#创建构建容器
docker buildx create --name mybuilder
#buildx使用构建容器
docker buildx use mybuilder
#初始化构建容器
docker buildx inspect --bootstrap

当初始化成功,会拉下来moby/buildkit:buildx-stable-1的镜像,并启动构建容器。通过 docker ps 查看如下:

root@hz:~# docker ps
root@hz:~# docker ps
CONTaiNER ID   IMAGE                           COMMAND       CREATED       STATUS          PORTS     NAMES
ba6651e07ab0   moby/buildkit:buildx-stable-1   "buildkitd"   5 weeks aGo   Up 50 minutes             buildx_buildkit_mybuilder0

调整Dockerfile接收平台相关参数

为确保构建容器能拉取到正确平台的基础镜像,可显式在FROM后指定平台参数 TARGETPLATFORM 或 BUILDPLATFORM,由buildx自动传递。

FROM --platform=$TARGETPLATFORM 基础镜像名:TAG
.... 其他内容

同时构建X86_64与ARM64镜像

构建并直接推送到指定仓库

docker buildx build -t 镜像仓库地址/镜像名:TAG --platform linux/amd64,linux/arm64 . --push

构建并导出到本地Docker images中

docker buildx build -t 镜像仓库地址/镜像名:TAG --platform linux/arm64 . --load

注意那个点,是构建上下文位置为当前目录的意思。另外导出到本地只能构建一个镜像,本地不支持同时导出manifest lists。

导出的镜像如果与当前运行环境平台不同,是无法直接启动的,可以导出(docker save)传输到合适的平台上运行。

写在最后

本文简易地创建了多平台镜像构建环境,更多相关Docker Buildx构建多平台镜像内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: DockerBuildx构建多平台镜像的实现

本文链接: https://lsjlt.com/news/154116.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • DockerBuildx构建多平台镜像的实现
    目录写在前边构建环境启用BuildX安装qemu-user-static通知Docker使用qemu创建Buildx构建容器调整Dockerfile接收平台相关参数同时构建X86_6...
    99+
    2024-04-02
  • Docker Buildx构建多平台镜像的实现
    目录写在前边构建环境启用BuildX安装qemu-user-static通知Docker使用qemu创建Buildx构建容器调整Dockerfile接收平台相关参数同时构建X86_64与ARM64镜像写在最后写在前边 记录一下前阵子在X86...
    99+
    2024-04-02
  • Docker多阶段镜像构建的实现方法
    小编给大家分享一下Docker多阶段镜像构建的实现方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!从Docker版本 17.05.0-ce 开始,就支持了一种新...
    99+
    2023-06-07
  • Docker镜像多架构构建介绍
    前言: 目前arm系统越来越常见,对镜像的多架构需求也越来越大。对于同一个镜像,最简单的办法就是在amd64或arm机器上build后通过不同的tag进行区分,比如 nginx:v1...
    99+
    2024-04-02
  • Dockerfile构建自定义镜像的实现
    目录前言 Dockerfile简介 Dockerfile构建镜像的流程 Dockerfile使用 前言 前面文章中使用docker运行容器使用的镜像都是从dockerhub上远程p...
    99+
    2024-04-02
  • Docker构建镜像的两种方式实现
    目录从已有镜像更新镜像:从零开始构建镜像:从 docker 镜像仓库中下载的镜像不能满足我们的需求时,可以通过以下两种方式对镜像进行更改。 从已有镜像更新镜像 从零...
    99+
    2024-04-02
  • 使用Docker镜像构建Go应用的实现方法
    目录修炼背景第一次尝试第二次尝试第三次尝试神功练成项目地址修炼背景 我夜以继日,加班加点开发了一个最简单的 Go Hello world 应用,虽然只是跑了打印一下就退出了,但是老板...
    99+
    2024-04-02
  • 基于centos自己构建一个tomcat镜像的实现
    写个程序,要输出hello world才开心,同样,学习docker,自己构建镜像才算完事。 说正事: 先放linux用软件链接,自行下载 apache-tomcat-8.0.26j...
    99+
    2024-04-02
  • MAUI中实现构建跨平台原生控件
    简介 MAUI中使用Handler体系来处理不同平台的原生控件实现, 即对应的, 如果我们想要创建控件, 只需要创建基于不同平台的Handler即可。 那么下面主要教大家如何通过创建...
    99+
    2024-04-02
  • Flutter 实战:构建跨平台应用
    文章目录 一、简介二、开发环境搭建三、实战案例:开发一个简单的天气应用1. 项目创建2. 界面设计3. 数据获取4. 实现数据获取和处理5. 界面展示6. 添加动态效果和交互7. 添加网络错误处理8. 添加刷新功能9. 添加定位功能...
    99+
    2023-12-22
    flutter
  • 多阶段构建优化Go 程序Docker镜像
    目录引言构建 Docker 镜像是否可以再减小 Docker 镜像的大小?引言 多阶段构建方式,是在 Dockerfile 中使用多个 FROM 指令,每个 FORM 指令都是一个新...
    99+
    2024-04-02
  • 【云原生 | 15】Dockerfile构建镜像实战
    🍁博主简介:         🏅云计算领域优质创作者         🏅2022年CSDN新星计划python赛道第一名         🏅2022年CSDN原力计划优质...
    99+
    2023-09-06
    云原生 docker 容器 运维 服务器
  • Jenkins打包微服务构建Docker镜像运行的实现
    目录环境准备开始1.GitLab远程仓库创建微服务项目 2.IDEA代码推送到Gitlab 3.Jenkins创建流水线项目 4.参数化构建 5.拉取远程仓库的构建脚本 6.编写远程...
    99+
    2024-04-02
  • Jenkins构建Docker镜像并推送至Harbor仓库的实现
    目录Dockerfile文件pom.xmlJenkins配置​ spring boot项目通过Jenkins集成构建Docker镜像推送到harbor仓库并启动容器然后拉...
    99+
    2024-04-02
  • Docker镜像构建之dockercommit的使用
    目录1、创建容器2、拷贝资源3、安装资源4、构建镜像5、使用构建的镜像创建容器我们可以通过公共仓库拉取镜像使用,但是,有些时候公共仓库拉取的镜像并不符合我们的需求。尽管已经从繁琐的部...
    99+
    2024-04-02
  • SpringBoot+Docker+IDEA实现一键构建+推送、运行、同镜像多容器启动
    场景: 由于公司项目需要,需要使用部署微服务项目,而之前都是使用tomcat部署,操作十分繁琐。最近正好在学习Docker,利用Docker容器做部署尝试 需求: 使用Do...
    99+
    2024-04-02
  • 手动构建自己的docker容器镜像实战
    目录前言一. 设置docker构建镜像的环境1.1 commit 命令的介绍1.2 创建一个tomcat容器二. 开始构建自己的镜像2.1 查看容器的ID2.2 使用命令docker...
    99+
    2023-05-15
    docker容器镜像实战 docker容器镜像
  • docker镜像的构建方式有哪些
    Docker镜像的构建方式有以下几种:1. 基于已有镜像:可以通过在已有镜像的基础上进行修改和定制来构建新的镜像。这种方式可以通过D...
    99+
    2023-09-18
    docker
  • docker镜像构建的方式有哪些
    有以下几种构建Docker镜像的方式: 使用Dockerfile:Dockerfile 是一个包含了构建 Docker 镜像步骤...
    99+
    2024-03-13
    docker
  • uniapp如何实现的多平台适应
    近年来,随着移动互联网的迅猛发展,多端适应已经成为开发者不可避免的问题之一。而现在最流行的一种技术便是uni-app,它可以让开发者用一套代码,快速开发出适于多种平台的应用,并具有完美的用户体验和可扩展性,那么uni-app如何实现的多平台...
    99+
    2023-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作