内容纲要
概要描述
详细说明
环境信息:
- 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属性