docker buildkit 是否可以与已安装的 docker.sock 和 docker 组合一起使用?

Does docker buildkit work with a mounted docker.sock and docker compose?

我正在尝试从已安装 docker.sock 的计数器内部启动同级容器。容器可以毫无问题地启动简单的同级容器,但是当使用 docker-compose 脚本时,它会失败:

=> [internal] load build definition from demo.dockerfile                                                       0.1s
 => => transferring dockerfile: 2B                                                                              0.0s
 => [internal] load .dockerignore                                                                               0.1s
 => => transferring context: 35B                                                                                0.0s
failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount3865249966/demo.dockerfile: no such file or directory

demo.dockerfile 是我试图构建图像的 docker 文件,引用自 docker-compose 文件。

有人用过 docker-compose with buildkit 和挂载过的 docker.sock 吗?

好像找不到 docker 文件的路径被弄乱了。

好的,事情是这样的:

卷装载路径 在我们的 docker-compose 文件中损坏了,因为它们扩展到绝对路径 inside job-runner 但在 运行 outside 在 主机。我们不能仅仅通过硬编码路径来修复它,因为每个人的机器和 CI 都是不同的。

作为解决方法,我们在启动时将基本路径也就是工作目录作为环境变量传递给作业运行程序,如下所示:

docker run -e HOST_MACHINE_PWD=$(pwd) -v /var/run/docker.sock:/var/run/docker.sock job-runner

然后我们在生成 docker-compose 文件的脚本中读取它,并将其用作安装这些卷的基本路径。
我们已经动态生成 docker-compose 配置这一事实使它变得更容易,如果您使用的是静态配置, 您可能需要尝试使用 sed 或其他覆盖 docker-compose 路径的方法。

这是我们写的博客 post,用于解释此修复程序和我们的设置,其中包含源代码链接,供其他尝试执行此类操作的人使用:https://www.lunasec.io/docs/blog/lunasec-ci/#how-to-use-dockersock-and-docker-compose-together