本镜像包含带有Earthly特定配置的buildkit,是Earthly使用本地守护进程时启动的组件。也可手动启动并作为远程/共享的BuildKit守护进程使用。
注意:本容器版本仅与对应版本的
earthly测试过,不支持版本不匹配的情况。
当前,latest标签对应版本为v0.8.13。
其他可用标签请查看 https://hub.docker.com/r/earthly/buildkitd/tags%E3%80%82
以下是覆盖最常见用例的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 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务