本镜像包含带有Earthly特定配置的buildkit,是Earthly使用本地守护进程时启动的组件。也可手动启动并作为远程/共享的BuildKit守护进程使用。
注意:本容器版本仅与对应版本的
earthly测试过,不支持版本不匹配的情况。
当前,latest标签对应版本为v0.8.13。
其他可用标签请查看 [***]
以下是覆盖最常见用例的docker run命令示例:
bashdocker run --privileged -t -v earthly-tmp:/tmp/earthly:rw earthly/buildkitd:v0.7.19
参数说明:
--privileged:必需,Earthly需要buildkit的某些特权功能。-t:让Docker模拟TTY,使buildkit日志输出彩色化。-v earthly-tmp:/tmp/earthly:rw:将earthly-tmpDocker卷挂载到容器的/tmp/earthly(若不存在则创建),用作buildkitd构建期间的临时/工作目录。在本地运行时,可通过设置EARTHLY_BUILDKIT_HOST=docker-container://<容器名称>或在config.yml中指定相应值来使用此buildkitd。
bashdocker run --privileged -t -v earthly-tmp:/tmp/earthly:rw -e BUILDKIT_TCP_TRANSPORT_ENABLED=true -p 8372:8372 earthly/buildkitd:v0.7.19
新增参数说明(已讨论的参数不再重复):
-e BUILDKIT_TCP_TRANSPORT_ENABLED=true:使buildkitd监听TCP端口而非Unix socket。-p 8372:8372:将主机端口8372转发到容器端口8372。使用TCP时,buildkit始终监听8372,可通过转发不同主机端口修改对外端口。若在名为fast-builder的机器上运行,可通过设置EARTHLY_BUILDKIT_HOST=tcp://fast-builder:8372或在config.yml中指定地址来使用此远程buildkitd。
本镜像需以特权容器运行,因为buildkitd需要通过runc启动和运行其他容器的适当权限。
/tmp/earthly目录由于该目录有大量读写操作,保持其高速访问至关重要。强烈建议使用Docker卷挂载/tmp/earthly。若不使用,buildkitd可能会消耗过多磁盘空间、运行缓慢或无法正常工作。
在某些环境中,未将/tmp/earthly挂载为Docker卷可能导致以下错误:
--> WITH DOCKER RUN --privileged ... ... rm: can't remove '/var/earthly/dind/...': Resource busy
要外部使用本镜像,需将主机端口转发到容器的8372端口,并确保外部可访问该主机端口。
本地使用earthly时,若EARTHLY_BUILDKIT_HOST设置为127.0.0.1、::1/128或localhost,Earthly会认为是本地并尝试自行管理BuildKit容器。建议使用主机名或其他替代名称。
| 变量名 | 默认值 | 描述 |
|---|---|---|
| EARTHLY_ADDITIONAL_BUILDKIT_CONFIG | 要追加到生成的配置文件中的额外buildkitd配置 | |
| BUILDKIT_TCP_TRANSPORT_ENABLED | 当buildkitd实例用于远程时,设为true | |
| BUILDKIT_TLS_ENABLED | 当buildkitd实例要求客户端使用mTLS时,设为true。需将证书挂载到正确位置(/etc/*.pem) | |
| CNI_MTU | 第一个默认接口的MTU | 自动检测MTU错误时设置。自动检测使用的设备可通过命令查看:ip route show | grep ^default | head -n 1 | sed 's|.* dev \(\w*\)\s.*|\1|' |
| EARTHLY_RESET_TMP_DIR | false | 设为true时,运行前清理/tmp/earthly。跨运行主机挂载临时目录时有用 |
| NETWORK_MODE | cni | 指定buildkitd的网络模式。默认使用CNI桥接网络,通过CNI_MTU配置 |
| CACHE_SIZE_MB | 0 | buildkitd缓存允许的最大大小(MiB)。0表示无限制 |
| GIT_URL_INSTEAD_OF | 配置buildkitd使用的git config --global url.<url>.insteadOf规则 | |
| IP_TABLES | 覆盖用于配置ip_tables的二进制文件(iptables_nft或iptables_legacy)。仅在平台自动检测失败时设置 |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429