简介
Docker更新了build流程,提供了全新的构建工具,原先的docker build
命令已经被标记为@deprecated
啦!是时候学习新的buildx工具,开始装逼啦努力追上时代啦~
1 | # sudo pacman -S docker-buildx |
1 | Usage: docker buildx [OPTIONS] COMMAND |
使用方法
其实吧,和普通的build相比,没啥区别,但是多了好多集成化的功能,请看示例:
1 | sudo docker buildx build \ |
可以看到,pull(始终拉取新镜像,指FROM里的内容),push(自动build后push),platform(新增多架构构建),还是有着节省行数的好处的(
另外,x86的机器上也可以直接构建arm镜像啦,这里使用树莓派常用的arm64(也就是aarch64)举例,首先我们要建立一个buildx环境:
1 | sudo docker buildx create \ |
然后用ls命令即可看到这个环境支持的架构:
1 | sudo docker buildx ls |
1 | NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS |
可以看到,后面有些奇怪的东西,x86怎么还有v2、v3、v4,这激发了我的好奇心,搜索发现,其实是指令集更新的区别,这里Golang给的最直观:
来自:https://go.dev/wiki/MinimumRequirements
1 | GOAMD64=v1 (default): The baseline. Exclusively generates instructions that all 64-bit x86 processors can execute. |
检测
关于自己的发行版目前支持的指令集,可以用以下命令查看:
1 | /lib/ld-linux-x86-64.so.2 --help | grep "x86-64-v" |
1 | x86-64-v4 (supported, searched) |
还有不少人(Gentoo狂热者?)把自己电脑里所有程序都改成v4构建的,以提高性能,Ubuntu文档里就有这样说:
https://cn.ubuntu.com/blog/optimising-ubuntu-performance-on-amd64-architecture_cn
还有Arch系的大佬介绍:
https://blog.chyk.ink/2022/08/11/arch-linux-upgrade-to-x86-64-v3-microarchitecture/