目的: 同一镜像tag 产出不同架构(x86\arm)的docker image
服务器查看CPU架构命令
# 查看 arm CPU
uname -m
# 或者用这个命令:
arch
主机build不同架构CPU 镜像实现命令记录
export DOCKER_CLI_EXPERIMENTAL=enabled
docker buildx version
docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d
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
docker buildx ls
docker buildx build -t registry-pr.xxxx.com/devops/test_arm:0.1 --platform=linux/arm,linux/arm64,linux/amd64 . --push
docker pull时会根据服务器自身不同的架构进行拉取
arm 安装docker-compose 参考链接文档