典型的错误信息如下:
ERROR exporting to image
error: failed to solve: server message: insufficient_scope: authorization failed
这个问题卡了我好久,也正好理了一下xbuild的原理,首先buildx只是个壳干活的叫buildkit,xbuild在目标容器中进行build构建,而目标容器中使用 QEMU这个东西模拟了不同架构下的指令,构建好了以后还有一个输出的过程,因为它支持非常非常多的格式,OCI兼容的只是其中一种,所以真的非常强大。
说了那么多废话,实际使用中要注意的就是build成功后如果出现上面的错误,说明导出配置有问题,一般打tag会直接指向目标repo地址,如果打的是本地的,那么加上--push就是错误的配置,可以改为-o type=docker
,但是这很奇怪,docker文档中就说明了一般直接使用目标repo。因为使用docker driver导出后只适用于本地,没有实际意义,我能想到的就是测试的时候可能会方便一些。