earthly/buildkitd本镜像包含带有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)。仅在平台自动检测失败时设置 |


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务