本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

和后端执行引擎,旨在优化构建流程的性能、可缓存性和灵活性。
以下命令将 buildkitd(守护进程)和 buildctl(客户端工具)安装到 /usr/local/bin:
# 编译并安装 $ make && sudo make install # 如需仅构建特定工作节点版本,可使用 $ make binaries-all # 生成 buildkitd.containerd_only 和 buildkitd.oci_only
buildkitd --debug --root /var/lib/buildkit
buildkitd 支持两种工作节点后端:
配置示例:
# 使用 containerd 后端(禁用 OCI 后端) buildkitd --debug --root /var/lib/buildkit --oci-worker=false --containerd-worker=true
LLB(Low-Level Build)是 BuildKit 的二进制中间格式,用于定义构建过程中进程的依赖图。类比:LLB 之于 Dockerfile,如同 LLVM IR 之于 C 语言。
目前已实现的 LLB 高级语言前端:
BuildKit 通过前端组件将 Dockerfile 转换为 LLB。默认使用 dockerfile.v0 前端,未来将支持外部镜像提供的前端。
# 构建当前目录的 Dockerfile buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=. # 带构建参数和目标阶段的构建 buildctl build \ --frontend=dockerfile.v0 \ --local context=. \ --local dockerfile=. \ --frontend-opt target=foo \ # 指定构建目标阶段 --frontend-opt build-arg:foo=bar # 传递构建参数
参数说明:
--frontend=dockerfile.v0:指定使用 Dockerfile 前端--local context=.:将当前目录作为构建上下文暴露给构建器--local dockerfile=.:指定 Dockerfile 所在目录对于熟悉 docker build 命令的用户,可使用示例包装工具 build-using-dockerfile,语法与 docker build 类似:
# 编译并安装工具 $ go build ./examples/build-using-dockerfile && sudo install build-using-dockerfile /usr/local/bin # 基本使用 $ build-using-dockerfile -t myimage . # 构建并标记镜像 myimage # 指定 Dockerfile 路径 $ build-using-dockerfile -t mybuildkit -f ./hack/dockerfiles/test.Dockerfile . # 构建结果自动加载到 Docker $ docker inspect myimage # 查看构建后的镜像
默认情况下,构建结果仅保存在 BuildKit 内部,需通过导出器指定输出方式。
需使用 containerd 工作节点:
buildctl build ... --exporter=image --exporter-opt name=docker.io/username/image # 查看导出的镜像 ctr --namespace=buildkit images ls
buildctl build ... \ --exporter=image \ --exporter-opt name=docker.io/username/image \ # 镜像名称(含仓库地址) --exporter-opt push=true # 启用推送
注:如需认证,
buildctl将自动读取 Docker 配置文件(~/.docker/config.json)中的凭据。
适用于构建非容器镜像产物:
buildctl build ... --exporter=local --exporter-opt output=path/to/output-dir
# 导出为 Docker 兼容的 tar 包并加载到 Docker buildctl build ... --exporter=docker --exporter-opt name=myimage | docker load
# 导出到本地文件 buildctl build ... --exporter=oci --exporter-opt output=path/to/output.tar # 导出到标准输出 buildctl build ... --exporter=oci > output.tar
buildctl du -v # -v 显示详细信息
buildctl debug workers -v # 显示工作节点类型、状态等信息
可通过 Docker 容器运行 buildkitd,并远程访问。客户端 buildctl 支持 macOS 和 Windows。
# 启动容器,映射端口 1234 并启用特权模式(需访问主机设备) docker run -d --privileged -p 1234:1234 tonistiigi/buildkit --addr tcp://0.0.0.0:1234 # 配置客户端连接地址 export BUILDKIT_HOST=tcp://0.0.0.0:1234 # 验证客户端连接 buildctl build --help
tonistiigi/buildkit 镜像可通过源码中的 Dockerfile 本地构建:
docker build -f ./hack/dockerfiles/test.Dockerfile -t local-buildkit .
| 参数 | 说明 |
|---|---|
--debug | 启用调试日志 |
--root <path> | 指定数据根目录(默认:/var/lib/buildkit) |
--oci-worker <bool> | 是否启用 OCI(runc)工作节点(默认:true) |
--containerd-worker <bool> | 是否启用 containerd 工作节点(默认:false) |
--addr <address> | 监听地址(如 tcp://0.0.0.0:1234,用于远程访问) |
| 参数 | 说明 |
|---|---|
--frontend <name> | 指定前端(如 dockerfile.v0) |
--local <name>=<path> | 暴露本地目录给构建器(如 context=.、dockerfile=.) |
--exporter <type> | 指定导出器类型(image、local、docker、oci 等) |
--exporter-opt <key>=<val> | 导出器选项(如 name=myimage、output=./dist、push=true) |
--frontend-opt <key>=<val> | 前端选项(如 target=stage、build-arg:foo=bar) |
| 环境变量 | 说明 |
|---|---|
BUILDKIT_HOST | 指定 buildkitd 守护进程地址(如 tcp://0.0.0.0:1234) |
JAEGER_TRACE | OpenTracing 收集地址(如 0.0.0.0:6831,用于链路追踪) |
BuildKit 支持 OpenTracing,用于追踪 buildkitd gRPC API 和 buildctl 命令。以 Jaeger 为例:
docker run -d -p 6831:6831/udp -p 16686:16686 jaegertracing/all-in-one:latest
# 设置追踪地址 export JAEGER_TRACE=0.0.0.0:6831 # 重启 buildkitd 和 buildctl,构建操作将被追踪 # 访问 [***] 查看追踪数据
BuildKit 支持无 root 权限运行,详细配置见 docs/rootless.md。
开发过程中,BuildKit 测试基于 containerd 仓库使用的 runc 版本。详见 runc.md。
# 运行所有单元测试和集成测试(容器化环境) make test # 测试指定包 make test TESTPKGS=./client # 运行特定测试(带详细日志) make test TESTPKGS=./client TESTFLAGS="--run /TestCallDiskUsage -v" # 指定工作节点运行集成测试(支持:oci、oci-rootless、containerd、containerd-1.0) make test TESTPKGS=./client TESTFLAGS="--run //worker=containerd -v"
# 修改 vendor.conf 后更新依赖 make vendor
# 执行代码格式、lint、测试等全量验证 make validate-all
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429