这段时间在做一个手上的产品往Arm版本的Linux上部署的测试,相信已经有不少人参与过轰轰烈烈的软硬件国产化自研运动中,背景这里就不多说了,本文这里主要介绍的是一个在环境部署过程中遇到的一些问题。
那个产品本身依赖着三四个外部中间件的,之前一直是用的docker部署,虽然我平时用的都是x86的环境,但查询过这些软件都支持arm64的版本。最初我以为用docker可以直接一键搞定的。谁知给我用的那个华为鲲鹏服务器的网络环境奇慢无比,并且慢就算了,还不稳定,下载下载着就断了。试了一下午实在无法搞定。
我试了一下,这个机器的上传速度还凑活,便想能不能在外部下载镜像后再上传上去。但我手头上都是x86的环境,以前的docker compose文件下载下来的是x86架构的,不能直接使用。我便想是否有类似交叉编译的那样,能跨架构下载镜像的参数可以配置,查询了一下,果然还有,基本操作是如下几步。
-
先修改docker服务加参数–experimental=true (默认开启了, 不用执行这一步, 不行的话通过docker version查看)
-
拉取的时候添加--platform arm64
-
拉完后用docker inspect确认一下这个镜像是不是你要的架构的.
示例:
docker pull --platform arm64 redis
docker inspect redis
这个platform参数在docker-compose文件中也是可以用,批量配置还是比较方便的。
导入导出:
拉取完成了后,用save导出,import导出。
docker save -o images.tar redis
docker load -i images.tar
这个命令也是是可以支持一次性导入,导出多个镜像文件的,非常方便。
参考文章: