混合架构下使用manifest-tool更换补丁

  其他常见问题
内容纲要

概要描述


详细说明


环境信息:

  • 171是arm64架构
  • 174是amd64架构

1. 构建不同架构下的组件镜像

在不同架构的节点上,分别应用私包/Patch。

注意:需要修改new_image配置指定镜像name为{arch}-{image_name}, 比如:amd64-argodb-inceptor、arm64-argodb-inceptor(amd64为x86, arm64为arm)

请务必分别在不同架构的节点上换包,否则会报错 standard_init_linux.go:228: exec user process caused: exec format error

1.1 171节点dockerfile换包

编辑dockerfile

[root@kv171 df]# cat dockerfile_arm64
FROM kv174:5000/transwarp/arm64-inceptor:transwarp-6.2.2-final
RUN rm -rf /usr/lib/inceptor/incepotr-engine-8.0.3.jar
COPY ./inceptor-engine-8.0.3.jar /usr/lib/inceptor/
[root@kv171 df]# docker build -f dockerfile_arm64 -t kv174:5000/transwarp/arm64-inceptor:transwarp-6.2.2-final ./
Sending build context to Docker daemon 12.19MB
Step 1/3 : FROM kv174:5000/transwarp/arm64-inceptor:transwarp-6.2.2-final
 ---> accc00a7e63b
Step 2/3 :RUN rm -rf /usr/lib/inceptor/incepotr-engine-8.0.3.jar
 ---> Running in 001ad62969f1
Removing intermediate container 001ad62969f1
 ---> 29a33ee67aec
Step 3/3 :COPY ./inceptor-engine-8.0.3.jar /usr/lib/inceptor/
 ---> dd5de0997a25
Successfully built dd5de0997a25
Successfully tagged kv174:5000/transwarp/arm64-inceptor:transwarp-6.2.2-final

可以看到刚刚构建的镜像:

[root@kv174 df]# docker images | grep inceptor
kv174:5000/transwarp/arm64-inceptor      transwarp-6.2.2-final   dd5de0997a25   3 seconds ago    7.13GB

推送到镜像仓库

docker push kv174:5000/transwarp/arm64-inceptor:transwarp-6.2.2-final
1.2 174节点dockerfile换包
[root@kv174 df]# cat dockerfile_amd64
FROM kv174:5000/transwarp/amd64-inceptor:transwarp-6.2.2-final
RUN rm -rf /usr/lib/inceptor/incepotr-engine-8.0.3.jar
COPY ./inceptor-engine-8.0.3.jar /usr/lib/inceptor/
[root@kv174 df]# docker build -f dockerfile_amd64 -t kv174:5000/transwarp/amd64-inceptor:transwarp-6.2.2-final ./
Sending build context to Docker daemon 12.19MB
Step 1/3 : FROM kv174:5000/transwarp/amd64-inceptor:transwarp-6.2.2-final
 ---> 6c80f0cd5866S
Step 2/3 :RUN rm -rf /usr/lib/inceptor/incepotr-engine-8.0.3.jar
 ---> Running in 8a4f898a8b32
Removing intermediate container 8a4f898a8b32
 ---> 9b0041543a5e
Step 3/3 :COPY ./inceptor-engine-8.0.3.jar /usr/lib/inceptor/
 ---> 13b7e292de18
Successfully built 13b7e292de18
Successfully tagged kv174:5000/transwarp/amd64-inceptor:transwarp-6.2.2-final

可以看到刚刚构建的镜像:

[root@kv174 df]# docker images | grep inceptor
kv174:5000/transwarp/amd64-inceptor      transwarp-6.2.2-final   13b7e292de18   3 seconds ago    4.38GB

推送到镜像仓库

docker push kv174:5000/transwarp/amd64-inceptor:transwarp-6.2.2-final

2. 将第一步中生成的不同架构的组件镜像pull到同一个节点上

这里在174节点把171生成的arm64镜像拉到本地,

docker pull kv174:5000/transwarp/arm64-inceptor:transwarp-6.2.2-final

可以看到这2个镜像:

[root@kv174 df]# docker images | grep inceptor
kv174:5000/transwarp/arm64-inceptor      transwarp-6.2.2-final   dd5de0997a25   3 minutes ago    7.13GB
kv174:5000/transwarp/amd64-inceptor      transwarp-6.2.2-final   13b7e292de18   7 minutes ago    4.38GB

3. 使用manifest-tool工具合并上传镜像

在174节点执行如下命令

/usr/bin/manifest-tool/manifest-tool push from-args --platforms linux/amd64,linux/arm64 \
  --template kv174:5000/transwarp/ARCH-inceptor:tanswarp-6.2.2-final \
  --target kv174:5000/transwarp/inceptor:tanswarp-6.2.2-final

参考命令(此命令中出了registryIp、registryPort、component、image_tag需要修改外,其他字段均不需要修改):

/usr/bin/manifest-tool/manifest-tool push from-args --platforms linux/amd64,linux/arm64 \
 --template :/transwarp/ARCH-: \
 --target :/transwarp/:

4. 验证

manager界面重启服务,分别在 arm64 和 amd64 节点 上找一个服务对应的pod,进入pod内验证私包md5 (Patch检验version.json)

如果不想重启服务验证,可以分别找一个 arm64 和 amd64 节点docker pull kv4:5000/transwarp/inceptor:transwarp-6.2.2-final,检查拉取的镜像id是否是对应架构的即可。

FAQ:


如何确认多架构镜像是否推送成功

manifest-tool inspect :/transwarp/inceptor:transwarp-6.2.2-final

确认镜像是否具有多个arch属性

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。