前言
由于项目需求,生成环境没办法连接外网,而且是64位的ARM机器,开发环境是64位的AMD(X86)机器,这里会涉及到跨架构拉取Docker镜像,在AMD机器上拉取ARM的镜像(Docker默认是拉取当前系统架构的镜像包,也就是AMD,这个镜像包无法在生成环境运行)
第一步,找到需要的镜像
这里以Postgres为例子,https://hub.docker.com/_/postgres/tags
自行挑选需要的Tag

第二步,选择需要的OS/ARCH

第三步,复制镜像名称和MANIFEST DIGEST,拼接处理
注意:不是复制镜像名称下的 INDEX DIGEST,复制错了任然会
拼接后内容
说明:{{镜像名称}}@{{MANIFEST DIGEST}}
postgres:alpine3.20@sha256:b4813980af3fad899843b334355f17a8006694a4ec280bd9b62fe8066d86d44d
第四步,拉取镜像
说明:docker pull {{第三步,拼接处理的内容}}
docker pull postgres:alpine3.20@sha256:b4813980af3fad899843b334355f17a8006694a4ec280bd9b62fe8066d86d44d
执行完这一步后,通过docker images命令可以看到postgres:alpine3.20镜像,注意:由于是Arm64的包,不符合当前系统架构,所以无法在本系统运行,需要将镜像导出为本地文件
第五步,导出镜像文件
说明:docker save -o {{导出的文件名}} {{需要导出的镜像名称+tag,也可以是镜像id(使用镜像id,将导致重新导入时,tag为none)}}
docker save -o postgres:alpine3.20_arm64.tar.gz postgres:alpine3.20
最后,将postgres:alpine3.20_arm64.tar.gz拷贝到对应的机器上导入镜像
说明:docker load -i {{镜像文件}}
docker load -i postgres:alpine3.20_arm64.tar.gz
导入后通过docker images查看镜像是否存在,导入后和docker pull拉取的镜像一样使用
