【问题标题】:Does docker buildkit work with a mounted docker.sock and docker compose?docker buildkit 是否可以与已安装的 docker.sock 和 docker compose 一起使用?
【发布时间】:2021-12-15 06:01:45
【问题描述】:

我正在尝试从装有 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 是我试图从中构建图像的 dockerfile,引用自 docker-compose 文件。

之前有没有人使用 docker-compose 和 buildkit 和一个挂载的 docker.sock?

这就像寻找 dockerfile 的路径变得一团糟。

【问题讨论】:

  • 您能否编辑问题以包含minimal reproducible example?我希望这种方法能够奏效,但如果没有看到任何代码或设置,很难说它为什么不奏效。
  • 嗨,我们想通了,我写了一篇博文,很快就不能作为答案了。问题是撰写文件中的卷安装路径正在扩展到运行 docker-compose 的容器内部的绝对路径,但当然需要在主机外部工作。我们将 $(pwd) 作为环境变量传递给容器,然后将该路径插入到 docker-compose 文件中。效果很好。

标签: docker docker-compose docker-in-docker docker-buildkit


【解决方案1】:

好的,这就是发生的事情:

卷安装路径 在我们的 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 路径。

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

【讨论】:

    猜你喜欢
    • 2022-11-21
    • 2020-04-03
    • 2021-12-27
    • 2019-12-25
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多