双架构镜像构建方法
说明:
制作双架构镜像,Docker客户端版本需要大于18.03。
构建双架构镜像的本质是先分别构建x86和ARM架构的镜像,然后通过构建双架构的镜像manifest。
例如已经构建好了defaultbackend-linux-amd64:1.5和defaultbackend-linux-arm64:1.5两个镜像,分别是x86架构和ARM架构。
将这两个镜像上传到SWR镜像仓库,如下所示。上传镜像的具体方法请参见客户端上传镜像。
# 给原始amd64镜像defaultbackend-linux-amd64:1.5加tag
docker tag defaultbackend-linux-amd64:1.5 swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-amd64:1.5
# 给原始arm64镜像defaultbackend-linux-arm64:1.5加tag
docker tag defaultbackend-linux-arm64:1.5 swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-arm64:1.5
# 上传amd64镜像至swr镜像仓库
docker push swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-amd64:1.5
# 上传arm64镜像至swr镜像仓库
docker push swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-arm64:1.5
创建双架构manifest文件并上传。
# 开启DOCKER_CLI_EXPERIMENTAL
export DOCKER_CLI_EXPERIMENTAL=enabled
# 创建镜像manifest文件
docker manifest create --amend --insecure swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend:1.5 swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-arm64:1.5 swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-amd64:1.5
# 给镜像manifest文件添加arch信息
docker manifest annotate swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend:1.5 swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-amd64:1.5 --arch amd64
docker manifest annotate swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend:1.5 swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-arm64:1.5 --arch arm64
# 向swr镜像仓库推送镜像manifest
docker manifest push -p --insecure swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend:1.5
这样在创建负载时就只需要使用swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend:1.5这个镜像地址。
- 当Pod调度到x86架构的节点时,会拉取swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-amd64:1.5这个镜像。
- 当Pod调度到ARM架构的节点时,会拉取swr.cn-north-4.myhuaweicloud.com/test-namespace/defaultbackend-linux-arm64:1.5这个镜像。
参考文档:
https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0305.html