Docker构建多平台镜像

docker的多架构镜像构建
目前很多服务器都是基于arm架构的,而现在大多数的docker镜像都是基于x86架构的。一种情况就是同样的代码编译成业务包做成镜像需要部署在不同架构的服务器上,这个时候我们就可以使用docker的多平台构建了。
以下操作是在centos7.9系统上完成(x86_64位)
注意要使用docker的多架构镜像构建功能linux内核需要大于4.19才行,如下图,我的centos系统的内核为5.4.278
image.png
如果不是4.19及以上的内核,请升级linux内核,centos7系统可以参考此文章升级内核:https://blog.csdn.net/pky86676022/article/details/139870965

一、启用docker buildx插件

Docker Buildx 是 Docker的CLI插件,来自于Moby BuildKit 。你的docker版本不能低于19.10使用docker version命令查看docker版本
image.png
我的docker版本是26.1.4符合要求,下面启用docker buildx功能:
编辑docker的配置文件 **vim /etc/docker/daemon.json **在配置文件中新增如下标签对:
“experimental”: true ,
image.png
重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

检查docker buildx版本:

 docker buildx version

image.png
在当前的x86_64架构的机器上运行一个特权 Docker 容器启用 binfmt_misc 来运行非x86架构的 Docker 镜像

docker run --rm --privileged  docker/binfmt:a7996909642ee92942dcd6cff44b9b95f08dad64-amd64

image.png
运行如下命令检查是否其支持arm64架构的编译工作了

ls -al /proc/sys/fs/binfmt_misc/

image.png
接下来创建一个新的支持多架构的构建器。

docker buildx create --use --name mybuilder
docker buildx inspect mybuilder --bootstrap
docker update --restart=always buildx_buildkit_mybuilder0

检查这个构建器

docker buildx ls

image.png
如图,这个构建器可以构建linux/amd64和linux/arm64的镜像

二、写一个Dockerfile,尝试构建多架构镜像并推送到仓库中

先登录我的私服仓库,等下把多架构镜像推送到这里
image.png
我这里以制作一个Java运行环境的镜像为例演示。
vim Dockerfile

# 制作一个Java基础镜像
FROM alpine:3.18.7
LABEL maintainer="pkyit"
RUN apk add --no-cache openjdk8-jre tzdata curl
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

image.png
运行如下命令构建多架构镜像:

docker buildx build  \
-t registry.cn-hangzhou.aliyuncs.com/pkyit/jre8:alpine3.18.7 \
-f Dockerfile .  \
--platform linux/amd64,linux/arm64 --push

image.png

三、验证

等待片刻,显示已经构建了linux下的amd64和arm64的2个镜像并且推送到阿里云的私服仓库中了。
image.png
image.png
不妨把arm64架构的镜像拉取下来验证一下看看是不是arm64架构的:

# 拉取指定架构的镜像
docker pull --platform=linux/arm64 registry.cn-hangzhou.aliyuncs.com/pkyit/jre8:alpine3.18.7
# 检查指定镜像的架构
docker inspect  registry.cn-hangzhou.aliyuncs.com/pkyit/jre8:alpine3.18.7 | grep Architecture

image.png
以上就是docker多架构构建镜像的全部流程。

参考以下链接:
https://blog.csdn.net/tanjunchen/article/details/124060471
https://blog.csdn.net/weixin_43403660/article/details/125974212
https://blog.csdn.net/m0_70748381/article/details/126865574
如果我的文章对您有帮助,还请您多多支持我。支付宝帮忙扫一下吧
在这里插入图片描述

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Docker的Nacos PG版本镜像是一个虚拟化容器,其中包含了Nacos服务器和PostgreSQL数据库的集成。Nacos是一个开源的服务发现、配置管理和服务管理平台,可用于实现微服务架构中的服务注册与发现、动态配置管理等功能。而PostgreSQL是一个功能强大的开源关系型数据库,具有高可靠性和高性能的特点。 Nacos PG版本镜像结合了Nacos和PostgreSQL的特性,可以方便地搭建一个完整的服务治理平台。在使用过程中,我们可以通过Docker快速部署Nacos PG版本镜像,并进行配置和管理。 使用Nacos PG版本镜像可以带来很多优势。首先,它提供了一种简单、快速和一致的部署方式,大大节省了部署和管理成本。其次,通过Nacos PG版本镜像,我们可以充分利用Docker容器化技术,实现资源的高效利用和隔离。同时,镜像提供了灵活的配置选项,可以根据需求进行调整和扩展。 另外,Nacos PG版本镜像还具有高可靠性和可伸缩性。由于使用了PostgreSQL数据库,可以保证数据的持久性和可靠性。而且,镜像支持集群模式,可以通过横向扩展来满足大规模的服务治理需求。 总之,Docker的Nacos PG版本镜像为我们提供了一个便捷、高效和可靠的部署选择,使得构建和管理服务治理平台变得更加简单和可靠。无论是开发还是生产环境,使用Nacos PG版本镜像可以显著提高系统的可维护性和扩展性,为我们的应用提供更好的支持。 ### 回答2: Docker是一种容器化技术,Nacos是一个服务发现和配置管理平台,而PG是指PostgreSQL,一种开源的关系型数据库。在Docker中,可以通过使用已经存在的镜像来快速部署并运行各种软件和应用程序。针对Nacos和PG,也有相应的Docker镜像可以使用。 首先,Nacos是一个开源的服务发现和配置管理平台,可以用于多种场景下的服务管理,包括服务注册、发现、配置和元数据管理。Nacos提供了许多不同版本的Docker镜像,可以根据自己的需求选择合适的版本进行部署。通过Docker镜像,可以方便地在不同的环境中进行Nacos的部署和管理。 其次,PG即PostgreSQL,是一个功能强大且可扩展的关系型数据库。Docker提供了多个PG版本的镜像,可以根据自己的需求选择合适的版本进行部署。使用PG的Docker镜像可以快速地搭建一个可用的数据库环境,方便进行开发和测试,也适用于生产环境中的部署。 总之,通过Docker镜像,我们可以方便地部署和管理Nacos和PG。在选择镜像时,可以根据自己的需求选择合适的版本,并按照Docker的相关文档进行部署和配置。使用Docker镜像可以大大简化环境的搭建和配置过程,提高工作效率,并实现快速部署。 ### 回答3: Docker是一种虚拟化平台,可以将应用程序和服务从操作系统中分离,实现便捷的部署和管理。而Nacos和Pg(PostgreSQL)是常用的开源工具和数据库。 Docker镜像是指将应用程序和所需的依赖打包为一个可移植的容器,可以在任何支持Docker的环境中运行。Nacos和Pg都有对应的Docker镜像。 Nacos是一个用于动态服务发现、配置管理和服务治理的开源项目。它有多个版本,镜像名称一般为"nacos/nacos-server"。可以通过Docker命令从Docker Hub下载和运行Nacos镜像。 Pg是一种开源的关系型数据库,提供了可扩展、高性能和安全的数据存储解决方案。对于Pg的Docker镜像,也有多个版本可供选择。镜像名称通常以"postgres"开头,后面加上具体的版本号。 使用Docker镜像可以实现快速部署和管理Nacos和Pg。在运行镜像时,可以指定镜像名称以及相关的配置和参数,如端口映射、数据卷挂载等。 总结来说,Docker镜像是以容器化的方式封装应用程序和依赖,提供了便捷的部署和管理方式。Nacos和Pg都有对应的Docker镜像,通过拉取和运行相应的镜像,可以快速搭建和使用这些工具和数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pengkai火火火

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值