在amd64平台构建适用于linux/arm64/v8平台的Docker镜像

这篇具有很好参考价值的文章主要介绍了在amd64平台构建适用于linux/arm64/v8平台的Docker镜像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在amd64平台构建适用于linux/arm64/v8平台的Docker镜像

该镜像内置了Redis、MySQL、Nginx、JDK11功能

Docker 提供了一种名为 Buildx 的功能,它允许在不同的平台上进行多架构构建。我们可以使用 Buildx 在 amd64 平台上构建适用于 linux/arm64/v8 平台的 Docker 镜像。

请按照以下步骤进行操作:

  1. 确保您的 Docker 安装中已启用 Buildx。您可以运行以下命令来检查:

    docker buildx version
    #下面是我运行的结果
    root@fsrm-virtual-machine:~# docker buildx version
    github.com/docker/buildx v0.10.4 c513d34
    root@fsrm-virtual-machine:~#
    #如果输出如上字样或者包含 "multi-platform" 或 "builder" 字样,那么 Buildx 已启用。否则,您需要确保 Docker 版本符合要求,并启用实验性功能。
    
  2. 创建一个名为 Dockerfile 的文件,并使用文本编辑器打开它。

  3. Dockerfile 中,使用 FROM 指令指定基础镜像,并在同一行使用 --platform 选项指定平台为 linux/arm64/v8。然后,使用适当的命令来安装和配置所需的组件。

    下面为Dockerfile文件的完整内容

    # 基于适用于linux/arm64/v8平台的基础镜像
    FROM --platform=linux/arm64/v8 ubuntu:latest
    
    # 安装和配置Redis
    RUN apt-get update && apt-get install -y redis-server
    
    # 安装和配置Java
    RUN apt-get install -y openjdk-11-jdk
    
    # 安装和配置MySQL
    RUN apt-get install -y mysql-server
    
    # 安装和配置Nginx
    RUN apt-get install -y nginx
    
    # 其他指令...
    
    # 暴露端口
    EXPOSE 80
    
    # 启动服务
    CMD service mysql start && service redis-server start && nginx -g 'daemon off;'
    
  4. 保存并关闭 Dockerfile 文件。

  5. 因为构建过程中需要使用 QEMU 模拟器来运行不同架构的二进制文件。所以需要在构建主机上正确安装QEMU 模拟器。下面是安装命令:

    apt-get install -y qemu-user-static
    
  6. (非必须)检查构建主机的 Docker 配置:在某些情况下,需要在 Docker 的配置中启用特定选项以支持多架构构建。您可以编辑 Docker 的配置文件(通常是 /etc/docker/daemon.json)并添加以下内容:

    {
      "features": {
        "buildkit": true
      }
    }
    

    然后重新启动 Docker 服务:

    systemctl restart docker
    

    检查 Docker 版本:确保您的 Docker 版本符合要求,并支持 Buildx 和多架构构建。建议使用最新的 Docker 版本,并确保已启用实验性功能。

    检查网络连接:在构建过程中,QEMU 需要从互联网上下载所需的文件。请确保构建主机可以访问互联网,并且没有任何网络连接问题。

  7. 打开终端,并进入包含 Dockerfile 的目录。

  8. 使用以下命令创建一个 Buildx 构建器并进行构建:

    docker buildx create --use --name mybuilder
    docker buildx build --builder mybuilder --platform linux/arm64/v8 -t myimage --output type=docker .
    

    在上述命令中,我们首先使用 docker buildx create 命令创建一个名为 mybuilder 的 Buildx 构建器,并使用 --use 选项将其设置为当前活动构建器。然后,我们使用 docker buildx build 命令指定构建器为 mybuilder,使用 --platform linux/arm64/v8 选项指定目标平台为 linux/arm64/v8,并指定镜像名称为 myimage,我们添加了 --output 参数,并将其值设置为 type=docker,以将构建结果保存为 Docker 镜像。

  9. Docker 将根据指定的平台进行构建,并生成适用于 linux/arm64/v8 平台的镜像。

  10. 完成构建后,您可以使用 docker images 命令查看已加载的镜像列表,并确认镜像是否存在。

  11. 如果想导出镜像文件,可以使用 docker save 命令将生成的镜像保存到文件中,指定输出文件的名称和路径,以便后续使用。

    docker save -o myimage.tar myimage
    #在上述命令中,myimage.tar 是导出的镜像文件的名称。您可以根据需要指定其他路径和文件名。
    
  12. 您可以将该文件传输到其他环境中,然后使用 docker load 命令将其加载到 Docker 守护程序中。文章来源地址https://www.toymoban.com/news/detail-583073.html

    docker load -i myimage.tar
    

到了这里,关于在amd64平台构建适用于linux/arm64/v8平台的Docker镜像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • The requested image‘s platform (linux/arm64/v8) does not match the detected host platform (linux/amd

    这一段完整的报错是: The requested image’s platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested 翻译过来就是说:请求的映像的平台(linux/arm64/v8)与检测到的主机平台(linux/amd64)不匹配,未请求特定平台。 背景: 这段报错是发生在内

    2024年02月01日
    浏览(36)
  • 【Docker】MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)

    以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!  公众号原文链接:MySQL 源码构建 Docker 镜像(基于 ARM 64 架构) 背景介绍 近期,笔者正推进公司 MySQL 适配 ARM 64 架构工作,由于一直使用 Docke

    2024年04月15日
    浏览(37)
  • x86架构上构建arm64架构的docker镜像

    项目需要提供arm64架构上的centos7对应docker镜像,然后本地宿主机只有x86架构机器,因此需要在x86机器上构建centos arm64架构的docker镜像 宿主机操作系统:centos7.7 amd64架构 docker版本:19.03.15 ARM,AMD,X86,AArch64的概念可以参考: https://blog.csdn.net/Bubbler_726/article/details/88397357 下载 qemu-

    2024年02月11日
    浏览(42)
  • 运行docker镜像报错:WARNING: The requested image‘s platform (linux/amd64)的解决办法

    运行docker镜像时,报错: (1) WARNING: The requested image’s platform (linux/amd64) does not match the detected host platform (linux/386) and no specific platform was requested 原因: dockers镜像的系统架构类型和主机(虚拟机)的系统架构类型不一样 解决办法: docker可以通过 --platform = 系统架构 命令获取

    2024年02月11日
    浏览(26)
  • Linux软件包名称含AMD,ARM,x64的详解

    下载clickhouse-backup时看到不同软件包,有的是x86,有的是amd64,有的是arm64,这些有啥区别呢? clickhouse-backup-2.4.2-1.x86_64.rpm clickhouse-backup_2.4.2_amd64.deb clickhouse-backup_2.4.2_arm64.deb x86 和 ARM 都是CPU设计的一个架构。x86 用的是复杂指令集。ARM用的是精简指令集。 x86_64简称x64是基于

    2024年02月03日
    浏览(27)
  • manifest for docker.io/arm64v8/elasticsearch:latest not found问题处理

    使用docker安装elasticsearch的时候可能会碰到这样的问题: manifest for docker.io/arm64v8/elasticsearch:latest not found 在安装arm64的elasticsearch时,docker安装会报错,无法继续进行,意思就是在docker找不到最新版本的服务,这个时候要注意,在docker hub官网上面有关于elasticsearch的版本号,如果

    2024年02月11日
    浏览(37)
  • 确定Mac\Linux系统的架构类型是 x86-64(amd64),还是 arm64 架构

    我们在下载软件或镜像时会有很多版本,那需要根据我们的系统架构选择正确的软件或镜像版本。 要确定你的系统使用的是 x86-64(amd64) 还是 arm64 架构,可以使用以下方法之一: 使用 uname 命令: 打开终端,并运行以下命令: 在MAC中: 如果输出结果是 x86_64 ,则表示你的系

    2024年02月08日
    浏览(30)
  • Linux系统查看版本、位数(32位或64位)、架构(arm或amd)的命令

    这里是Ubuntu linux系统; 输入命令: 显示: 输入命令: 显示: 输入命令: 显示: 补充:amd (intelx86架构)和arm版本区别。 x86和arm架构定位不同: arm基于精简指令(RISC),本身定位于嵌入式平台,简化了硬件逻辑的设计,减少了晶体管,从而降低功耗,流水线等控制并不复杂

    2024年02月16日
    浏览(38)
  • CentOS(4)——关于Linux软件下载时:amd64、x86、x86_64、arm64 的说明

    目录 一、简介 二、常见的CPU架构 三、Linux查看CPU架构命令 ①arch命令 ②uname -a 命令 ③lscpu 在安装GitLab Runner的时候,去清华源下载RPM包时发现同一个软件有许多不同架构的安装包,常见的有amd64、x86、x86_64、arm64这些架构,这就类似于Windows下安装软件需要区分32bit和64bit。在

    2024年02月03日
    浏览(42)
  • M芯片Mac构建支持arm64的java8基础镜像

    拉取指定平台的镜像 openjdk:8-jdk-alpine 没有安装bash,只安装sh,所以进入容器命令 以openjdk:8-jdk-alpine为基础镜像,添加bash Dockerfile 使用新的Dockerfile构建带有bash的镜像: 重新打的镜像即可使用以下命令进入容器

    2024年03月21日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包