两个方案:
buildkitd.toml(镜像加速)remote 驱动连过去配置文件统一放:/Users/sunjingliang/buildkit-config/buildkitd.toml
# /Users/sunjingliang/buildkit-config/buildkitd.toml[registry."docker.io"]mirrors = ["docker.m.daocloud.io"][registry."docker.m.daocloud.io"]http = false[worker.oci]snapshotter = "overlayfs"
方案 B 在 Docker Desktop 上需把
snapshotter改成"native",见 B 的注意事项。
docker buildx rm -f mirror-builderdocker buildx create \--name mirror-builder \--driver docker-container \--driver-opt network=host \--buildkitd-config /Users/sunjingliang/buildkit-config/buildkitd.toml \--bootstrap --use
docker exec buildx_buildkit_mirror-builder0 cat /etc/buildkit/buildkitd.tomldocker buildx inspect mirror-builder
docker buildx build --platform linux/amd64,linux/arm64 --load -t sun-panel:test .docker buildx build --platform linux/amd64,linux/arm64 --push -t hslr/sun-panel:1.0.0 .
rm + create 重建/Users 已在 Docker Desktop → Settings → Resources → File Sharing 中共享--driver-opt env.HTTP_PROXY=http://192.168.3.10:7897 --driver-opt env.HTTPS_PROXY=http://192.168.3.10:7897
docker rm -f remote-buildkitddocker run -d \--name remote-buildkitd \--privileged \-v buildkit-cache:/var/lib/buildkit \-v /Users/sunjingliang/buildkit-config/buildkitd.toml:/etc/buildkit/buildkitd.toml:ro \-p 127.0.0.1:1234:1234 \moby/buildkit:latest \--addr tcp://0.0.0.0:1234
docker buildx rm -f remote-builderdocker buildx create \--name remote-builder \--driver remote \tcp://127.0.0.1:1234 \--bootstrap --use
docker buildx inspect remote-builder # STATUS = runningdocker logs remote-buildkitd
buildkit-cache:/var/lib/buildkit)。macOS host mount 走 virtiofs 不支持 xattrs,会报 failed to list xattrs / failed to create hash for ...moby/buildkit:rootless),snapshotter 只能用 native,overlayfs 在 Docker Desktop 的 virtiofs 上无法创建快照目录tcp://127.0.0.1:1234 换成对应地址即可
docker buildx ls # 查看所有构建器(* 为当前)docker buildx use <name> # 切换当前构建器docker buildx inspect <name> # 查看详情docker buildx inspect --bootstrap # 启动并查看详情docker buildx rm -f <name> # 删除构建器docker buildx prune -f # 清理构建缓存
| 现象 | 原因 / 处理 |
|---|---|
failed to list xattrs |
缓存用了 macOS host mount,改用 named volume |
failed to create hash for ... operation not supported |
同上,virtiofs 不支持 xattrs |
| 配置没生效 | 改配置后未重建构建器,rm + create |
| 挂载路径报错 | Docker Desktop 未共享该路径,加到 File Sharing |
| remote 连接失败 | buildkitd 容器未启动 / 端口占用,检查 docker logs remote-buildkitd |
正在学习Go语言的PHP程序员。