arm 服务器搞docker 及 docker-compose 相关

326 阅读2分钟

目的: 同一镜像tag 产出不同架构(x86\arm)的docker image

服务器查看CPU架构命令

 # 查看  arm CPU
 uname -m
 
 # 或者用这个命令:
 arch 

主机build不同架构CPU 镜像实现命令记录

 ​
 # 启用 buildX 插件
 export DOCKER_CLI_EXPERIMENTAL=enabled
 ​
 # 验证是否启用
 docker buildx version 
 ​
 # 启用 binfmt_misc
 docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d
 ​
 ​
 # 验证是否开启 binfmt_misc
  ls -al /proc/sys/fs/binfmt_misc/ 
 total 0
 drwxr-xr-x 2 root root 0 Apr 14 10:46 .
 dr-xr-xr-x 1 root root 0 Apr 14 10:45 ..
 -rw-r--r-- 1 root root 0 Apr 14 10:46 qemu-aarch64
 -rw-r--r-- 1 root root 0 Apr 14 10:46 qemu-arm
 -rw-r--r-- 1 root root 0 Apr 14 10:46 qemu-ppc64le
 -rw-r--r-- 1 root root 0 Apr 14 10:46 qemu-s390x
 --w------- 1 root root 0 Apr 14 10:46 register
 -rw-r--r-- 1 root root 0 Apr 14 10:46 status
 ​
 ## 查看是否启用了相应架构
 cat /proc/sys/fs/binfmt_misc/qemu-aarch64
 enabled
 interpreter /usr/bin/qemu-aarch64
 flags: OCF
 offset 0
 magic 7f454c460201010000000000000000000200b7
 mask ffffffffffffff00fffffffffffffffffeffff
 ​
 ​
 从默认的构建器切换到多平台构建器  Docker 默认会使用不支持多 CPU 架构的构建器,我们需要手动切换。
 ​
 先创建一个新的构建器:
 docker buildx create --use --name mybuilder
 mybuilder
 ​
 ## 启用构建器
 docker buildx inspect mybuilder --bootstrap
 ​
 ## 查看当前构建起及构建起支持的CPU架构
 docker buildx ls
 ​
 ## 同时build一个整合的镜像并推送镜像库,(这里需要注意的是 dockerfile 中的基础镜像同一tag 中要有不同架构的镜像)
 docker buildx build -t registry-pr.xxxx.com/devops/test_arm:0.1 --platform=linux/arm,linux/arm64,linux/amd64 . --push
 ​
 docker pull时会根据服务器自身不同的架构进行拉取
 ## build完后 本地会有image
 ​

arm 安装docker-compose 参考链接文档