Skip to content

Latest commit

 

History

History
66 lines (42 loc) · 1.91 KB

9.multi-arch-for-graviton.md

File metadata and controls

66 lines (42 loc) · 1.91 KB

通过 buildx 构建多架构镜像

背景

Graviton 处理器为 AWS 自研的数据中心级别 ARM 架构处理器,相对于同配置 x86 服务器相比有大约 40% 性价比提升。在 EKS 中使用 Graviton实例有利于提升集群性价比。本文介绍如何借助 buildx 工具构建多架构镜像。备注:本样例在 Amazon Linux 2 操作系统验证通过

操作步骤

  1. 在 docker 环境安装 buildx
sudo amazon-linux-extras install docker -y

sudo service docker start

mkdir -p ~/.docker/cli-plugins

cd ~/.docker/cli-plugins

# 根据 docker 构建服务器架构下载二进制文件
wget https://github.com/docker/buildx/releases/download/v0.12.1/buildx-v0.12.1.linux-amd64
mv buildx-v0.12.1.linux-amd64 buildx
chmod a+x buildx
  1. 通过容器手动启用 binfmt_misc,让 docker 构建服务器操作系统支持多架构
sudo docker run --privileged tonistiigi/binfmt --install all
  1. aws 控制台创建 ECR 镜像仓库

  2. 配置 buildx 插件

sudo docker buildx create --use --name multi-arch

sudo docker buildx inspect multi-arch --bootstrap

sudo docker buildx ls
  1. 打包镜像并推送之 ECR 镜像仓库
# 登录 ecr 仓库
aws ecr get-login-password --region ap-northeast-1 | sudo docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com

# 获取样例代码

git clone https://github.com/dockersamples/spring-petclinic-docker.git

cd spring-petclinic-docker

# 通过 buildx 打包 docker 镜像,并推送至 ECR(ECR 上需要先创建镜像仓库)
sudo docker buildx build --push --builder multi-arch \
    --platform linux/amd64,linux/arm64 \
    -t 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/spring-petclinic:latest .
  1. 验证使用多架构镜像
sudo docker run -d -p 8080:8080 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/spring-petclinic:latest