Docker buildx构建跨平台镜像
目录
Docker buildx构建跨平台镜像,其实原理还是利用了QEMU虚拟机进行了跨平台构建。
一、开启 buildx 插件
1 2 |
# vim ~/.profile export DOCKER_CLI_EXPERIMENTAL=enabled |
使生效
1 |
source ~/.profile |
二、开启 binfmt_misc支持
1 2 |
# 安装binfmt,它内置了QEMU能提供跨平台构建功能 docker run --privileged --rm tonistiigi/binfmt --install all |
三、验证是否开启binfmt_misc
ls -al /proc/sys/fs/binfmt_misc/
1 2 3 4 5 6 7 8 9 10 11 12 |
total 0 drwxr-xr-x 2 root root 0 Apr 3 08:33 . dr-xr-xr-x 1 root root 0 Dec 21 06:02 .. -rw-r--r-- 1 root root 0 Apr 3 09:55 qemu-i386 -rw-r--r-- 1 root root 0 Apr 3 09:55 qemu-mips64 -rw-r--r-- 1 root root 0 Apr 3 09:55 qemu-mips64el -rw-r--r-- 1 root root 0 Apr 3 09:55 qemu-ppc64le -rw-r--r-- 1 root root 0 Apr 3 09:55 qemu-riscv64 -rw-r--r-- 1 root root 0 Apr 3 09:55 qemu-s390x -rw-r--r-- 1 root root 0 Apr 3 09:55 qemu-x86_64 --w------- 1 root root 0 Apr 3 08:33 register -rw-r--r-- 1 root root 0 Apr 3 08:33 status |
四、切换默认的构建器到多平台构建器
1 2 |
docker buildx create --use --name cpplabuilder docker buildx use cpplabuilder |
五、使用 buildx 构建一个同时支持 arm、arm64 和 amd64 多架构的 Docker 镜像,同时将其推送到 DockerHub
1 |
docker buildx build --platform linux/arm,linux/amd64,linux/arm64 -t cppla/serverstatus . --push |
更多命令帮助:docker buildx –help
六、备注
- Github: https://github.com/tonistiigi/binfmt
- QEMU卸载: docker run –privileged –rm tonistiigi/binfmt –uninstall qemu-*