earthly 使用中碰到的一些问题说明

buildkit依赖

earthly 依赖buildkit,我们可以自己搭建buildkit集群,或者earthly自己基于容器运行,可以通过
--buildkit-image 指定buildkit的镜像,当前的为earthly/buildkitd:v0.1.0

无网络环境的问题

目前在测试机器无网络环境构建镜像的时候发现暂时不太好事(buildkit的原因),通过大略查看buildkit 的源码,发现
在upack 阶段会有根据manifest 发去http 请求的处理,如果机器没有网络会有类似如下的错误

 
failed to load cache key: failed to do request: Head https://registry-1.docker.io/v2/library/busybox/manifests/1.31.1: 
dial tcp 54.210.105.17:443: i/o timeout

earthly 大致流程(后边详细介绍)

通过bcc的execsnoop查看到的,有利于学习earthly的一些原理

  • 测试的命令
earth --buildkit-image xxxx/buildkitd:v0.1.0 +docker

效果

PCOMM PID PPID RET ARGS
earth 24375 23225 0 /bin/earth --buildkit-image xxxxxxx +docker
docker 24381 24375 0 
docker 24393 24375 0 /bin/docker inspect --format={{index .Image}} earthly-buildkitd
docker 24405 24375 0 /bin/docker inspect --format={{index .Id}} xxxxxx
docker 24420 24375 0 /bin/docker inspect --format={{index .Config.Labels "dev.earthly.settingshash"}} earthly-buildkitd
sh 24437 24375 0 /bin/sh -c which git
docker 24438 24375 0 /bin/docker exec -i earthly-buildkitd buildctl dial-stdio
which 24437 24375 0 /bin/which git
git 24441 24375 0 /bin/git status
runc 24461 23742 0 
runc 24467 23742 0 /usr/bin/runc --root /var/run/docker/runtime-runc/moby --log /run/containerd/io.containerd.runtime.v1.linux/moby/064cae451e890ef1c29d04787db27d62da453e1a3000e925a64adad789d3498d/log.json --log-format json state 064cae451e890ef1c29d04787db27d62da453e1a3000e925a64adad789d3498d
runc 24472 23742 0 /usr/bin/runc --root /var/run/docker/runtime-runc/moby --log /run/containerd/io.containerd.runtime.v1.linux/moby/064cae451e890ef1c29d04787db27d62da453e1a3000e925a64adad789d3498d/log.json --log-format json exec --process /tmp/runc-process893340392 --detach --pid-file /run/containerd/io.containerd.runtime.v1.linux/moby/064cae451e890ef1c29d04787db27d62da453e1a3000e925a64adad789d3498d/09d4ab62304 064cae451e890ef1c29d04787db27d62da453e1a3000e925a64adad789d3498d
exe 24478 24472 0 /proc/self/exe init
5 24478 24472 0 /proc/self/fd/5 init
buildctl 24480 24472 0 /usr/bin/buildctl dial-stdio
runc 24486 23742 0 /usr/bin/runc --root /var/run/docker/runtime-runc/moby --log /run/containerd/io.containerd.runtime.v1.linux/moby/064cae451e890ef1c29d04787db27d62da453e1a3000e925a64adad789d3498d/log.json --log-format json state 064cae451e890ef1c29d04787db27d62da453e1a3000e925a64adad789d3498

说明

以上是在使用中碰到的一些问题,后期再仔细研究下buildkit的原理,可以是否有方法可以解决网络的问题

相关推荐