一、官网参考地址
https://docs.docker.com/build/buildkit/configure/
https://docs.docker.com/reference/cli/docker/buildx/
二、buildx 交叉编译
Buildx 是基于 BuildKit 的 Docker 扩展插件项目。Buildx 默认使用 BuildKit 引擎进行构建,本质上调用了 Buildkit 的 API,镜像构建过程是在 Buildkit 的环境中进行的。
Buildx 限制和应对:
Docker 版本限制,使用 buildx 作为 docker CLI 插件需要使用 Docker 19.03 或更高的版本才能支持。旧版本的 Docker 也可以单独安装调用二进制文件作为插件,可以支持部分功能。对于 Docker 版本大于 19.03 的版本,可以直接调用 buildx 二进制来访问 docker buildx 子命令。
Linux 内核版本限制,要求 Linux kernel >= 4.8,因为自该 Linux 内核版本 binfmt_misc 才支持 fix-binary (F) flag。fix_binary 标志允许内核在容器或 chroot 内使用 binfmt_misc 注册的二进制格式处理程序,即使该处理程序二进制文件不是该容器或 chroot 内可见的文件系统的一部分。即可以支持编译打包不同架构平台的镜像。
三、启用docker buildx
添加配置
vim /etc/docker/daemon.json
{
"experimental": true
}
- 自签名的证书加载,两种方案。
- 本地有证书文件,buildkit 容器启动以后自动加载。
- 把自签名证书文件打到镜像里面,然后通过 buildkitd.toml 指定证书文件位置。
root@ip-172-20-60-86:~# ls -l /etc/docker/certs.d/cloud.test.com/ca.crt /usr/local/share/ca-certificates/cloud.test.com.crt /etc/buildkit/certs.d/cloud.test.com/ca.crt
-rw------- 1 root root 2045 Sep 2 15:18 /etc/buildkit/certs.d/cloud.test.com/ca.crt # buildkit 官方要求的路径
-rw------- 1 root root 2045 Apr 16 13:49 /etc/docker/certs.d/cloud.test.com/ca.crt # docker 使用的,需要重启docker加载证书
-rw------- 1 root root 2045 Sep 2 15:16 /usr/local/share/ca-certificates/cloud.test.com.crt # OS系统使用的证书路径
root@ip-172-20-60-86:~#
对应的证书文件,要在指定的位置。
# docker buildx create \
--name builder \
--buildkitd-config=/etc/buildkitd.toml \
--driver docker-container \
--use \
--bootstrap \
--driver-opt image=cloud.test.com/moby/buildkit:buildx-stable-1 \
--platform linux/amd64,linux/arm64
# docker buildx create \
--name=builder \
--driver=docker-container \
--use \
--bootstrap \
--driver-opt "env.BUILDKIT_STEP_LOG_MAX_SIZE=10485760" \
--driver-opt image=cloud.test.com/moby/buildkit:buildx-stable-1 \
--platform linux/amd64,linux/arm64

四、参考命令
开启内核支持特性,(可选)
docker run --privileged --rm tonistiigi/binfmt --install all
列出所有可用的构建器
docker buildx ls
查看构建器详情
docker buildx inspect builder-20250211
启动 builder-20250211 构建器
docker buildx inspect --bootstrap --builder builder-20250211
设置默认构建器
docker buildx use --default builder-20250211
构建 debug-tools 镜像
docker buildx build \
--builder builder-20250211 \
--platform linux/amd64,linux/arm64 \
-t harbor.ctfo.com/znlk-edge/debug-network-tools:2024-03-19 \
--push \
-f tools/debug-tools/debug-ecu-tools/Dockerfile .
查看镜像 inspect
docker manifest inspect -v harbor.ctfo.com/znlk-edge/debug-network-tools:2024-03-19
创建 builder 实例
docker buildx create \
--name=jenkins \
--driver docker-container \
--platform linux/amd64,linux/386,linux/riscv64,linux/arm/v7,linux/arm/v6,linux/s390x,linux/ppc64le,linux/arm64
docker buildx create \
--name=jenkins \
--driver=docker-container \
--use \
--bootstrap \
--driver-opt \
image=cloud.test.com/moby/buildkit:buildx-stable-1 \
--platform linux/amd64,linux/arm64
查看构建器详情
docker buildx inspect jenkins
启动 mybuilder 构建器
docker buildx inspect --bootstrap --builder jenkins
设置默认构建器
docker buildx use --default jenkins