由于实际集群部署了 arm 和 amd混合云主机, 所以需要打包对应架构的docker镜像给到云主机自动调配.
arm架构的机器应该是比较便宜一些, 所以就有了如上情况.
可以利用docker这个插件, 再x86架构的机器上打包 arm架构的docker镜像了. 十分的方便.
整件事情的思路就是 对应指令集不同, 等于要有不同的基础镜像centos, 后面就是在这个操作系统上将自己的内容打包上去.
具体方法参考:
跨平台构建 Docker 镜像新姿势,x86、arm 一把梭
https://blog.csdn.net/alex_yangchuansheng/article/details/103146303?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-103146303-blog-126701828.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-103146303-blog-126701828.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=6
这边比较特殊的一个情况是, 还有一个特殊性就是实际的容器环境不是标准的k8s环境. 所以 采取了 打包成一个大镜像. 将SCA一整套服务打包成一整个镜像 给到使用.
所以采取了 nacos 2.0.1 作为基础镜像, 再将 gateway + 具体业务镜像加入. 这样就不用改代码了.
具体操作如下.
下载
https://github.com/nacos-group/nacos-docker/archive/refs/heads/master.zip
解压后导入到本地工程.
然后
1, 2 , 3 都是后面人为添加的.
2这个文件下载后解压成 1 这样导入到工程中.
2 的下载地址
https://github.com/alibaba/nacos/releases/download/2.0.1/nacos-server-2.0.1.tar.gz
下载极度不稳定, 各种加host也一定能成功, 解决方式就是用迅雷下载即可.
然后将dockerfile 修改 一些内容.
1, 填写自己所需要的nacos server 的版本
2 这里注释掉, 通常是下载不下来的.
3 由于2的下载不到, 所以需要使用3 这里, 这里会将相对路径中的nacos 的整个目录放进来.
就是这个步骤通常一卡就是卡很久, 什么压缩包解压不了. 直接解压了放进来是最稳妥的方式.
最后一步就是使用buildx 打包.
mirror="xxx.com/xxx/nacos-arm"
tag="2.0.1"
echo 开始构建镜像...
docker buildx build -f ./Dockerfile --platform=linux/arm64 -t $mirror:$tag .
echo "完成打包:$mirror:$tag"
date "+%Y-%m-%d %H:%M:%S"
这样本地就有nacos-arm的镜像了, 再在这个基础上, 往上添加其他镜像即可.
总体就是 在不同的 地基上盖楼. 这次就是从 --platform=linux/arm64 盖的 nacos 的楼.