docker buildkit 是不是可以与已安装的 docker.sock 和 docker compose 一起使用?

     2023-03-17     224

关键词:

【中文标题】docker buildkit 是不是可以与已安装的 docker.sock 和 docker compose 一起使用?【英文标题】: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 文件中。效果很好。 【参考方案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

【讨论】:

在 Docker 中使用 BuildKit 时,如何查看 RUN 命令的输出?

】在Docker中使用BuildKit时,如何查看RUN命令的输出?【英文标题】:WhenusingBuildKitwithDocker,howdoIseetheoutputofRUNcommands?【发布时间】:2019-09-0909:38:25【问题描述】:使用DOCKER_BUILDKIT=1构建Docker镜像时,有一个非常酷的进度指示器,但... 查看详情

使用远程代理转发时 docker buildkit mount ssh

】使用远程代理转发时dockerbuildkitmountssh【英文标题】:dockerbuildkitmountsshwhenusingremoteagentforwarding【发布时间】:2020-05-0708:22:18【问题描述】:我使用--sshdockerbuildkit功能,它在本地运行良好。我想在远程服务器上构建Docker,为此我... 查看详情

带有 BUILDKIT_INLINE_CACHE 的 docker --cache-from 不能每秒钟运行一次

】带有BUILDKIT_INLINE_CACHE的docker--cache-from不能每秒钟运行一次【英文标题】:docker--cache-fromwithBUILDKIT_INLINE_CACHEdoesnotworkeverysecondtime【发布时间】:2020-09-2411:34:25【问题描述】:我正在尝试将BUILDKITforDocker的缓存/拉取系统用于我的CI/... 查看详情

nerdctl+buildkitd构建容器镜像

...但是并不好用,比如说不支持build镜像。因此使用nerdctl+buildkitd 来管理。Nerdclt兼容原来docker的大部分命令,还实现了很多docker不具备的功能,例如延迟拉取镜像(lazy-pulling),镜像加密(imgcrypt)等。BuildKit是由Docker公司开发... 查看详情

iTunes Connect - 总安装量与已安装应用程序的当前设备

】iTunesConnect-总安装量与已安装应用程序的当前设备【英文标题】:iTunesConnect-totalinstallsvscurrentdevicesthathavetheappinstalled【发布时间】:2014-01-0812:46:48【问题描述】:我如何知道或计算iOS应用的总安装量与当前安装了该应用的设备... 查看详情

如何判断一台centos中是不是已安装了docker-compose?

参考技术A直接运行$dockerversion安装成功了的,可以看到详细信息。还有就是检查启动项systemctllist-unit-files在《Linux就该这么学》有专门的Linux命令库可以查询详细命令格式追问docker-compose不是docker 参考技术Bdocker-composeversion本回答... 查看详情

使用 Azure DevOps 构建管道将机密传递给容器时,Docker BuildKit 返回“/run/secrets/<secret-id>:没有这样的文件或目录”

】使用AzureDevOps构建管道将机密传递给容器时,DockerBuildKit返回“/run/secrets/<secret-id>:没有这样的文件或目录”【英文标题】:DockerBuildKitreturning\'/run/secrets/<secret-id>:Nosuchfileordirectory\'whenpassingsecretstocontainerusingAzureDevOpsbu 查看详情

问题:应用组件的命名与已安装应用有冲突

...注意:Android中由于ContentProvider导致的“应用组件的命名与已安装应用有冲突”问题android解决“应用组件的命名与已安装应用有冲突”问题 查看详情

dockerbuildkit(新增--mount--security--network等特性)(代码片段)

BuildKit是Docker官方社区推出的下一代镜像构建神器。可以更加快速,有效,安全地构建docker镜像,自dockerv18.09版本起已经集成了该组件。Buildkit是下一代docker构建组件,拥有众多特性:自动垃圾收集可扩展的前... 查看详情

为啥安装了 Docker 而不是 Docker Compose?

】为啥安装了Docker而不是DockerCompose?【英文标题】:WhyisDockerinstalledbutnotDockerCompose?为什么安装了Docker而不是DockerCompose?【发布时间】:2016-08-0917:15:06【问题描述】:我已经通过运行以下命令在CentOS7上安装了docker,curl-sSLhttps://g... 查看详情

Autotools 处理本地与已安装数据文件的方法

】Autotools处理本地与已安装数据文件的方法【英文标题】:Autotoolswaytohandlelocalvsinstalleddatafile【发布时间】:2021-01-0220:30:29【问题描述】:假设一个程序&lt;somepath&gt;/src/program.c在运行时从&lt;somepath&gt;/data/datafile读取数... 查看详情

mac安装docker(轻松解决安装)(代码片段)

...还不懂得话,在这么理解,docker你理解为快递车.那么快递车是不是有一个个包裹,包裹可以理解为一个镜像,镜像可以理解为一个Java类,而容器可以理解为Java类的实例。类只有一个,但可以new出千千万万个实例对象。所以... 查看详情

当电子 ABI 与已安装节点不同时,无法生成 TypeORM 迁移

】当电子ABI与已安装节点不同时,无法生成TypeORM迁移【英文标题】:UnabletogenerateTypeORMmigrationswhenelectronABIdiffersfrominstallednode【发布时间】:2021-12-2116:45:11【问题描述】:目前从源代码构建better-sqlite3并且工作正常,但运行typeormmi... 查看详情

如何检查 Docker 是不是安装在 Unix shell 脚本中? [复制]

】如何检查Docker是不是安装在Unixshell脚本中?[复制]【英文标题】:HowtocheckifDockerisinstalledinaUnixshellscript?[duplicate]如何检查Docker是否安装在Unixshell脚本中?[复制]【发布时间】:2018-03-1610:53:21【问题描述】:如果安装了Docker(Ubuntu... 查看详情

BuildKit:ssh 挂载在容器中无法正常工作

】BuildKit:ssh挂载在容器中无法正常工作【英文标题】:BuildKit:sshmountdoesn\'tworkincontainercorrectly【发布时间】:2021-12-2920:40:51【问题描述】:所以,情况就是这样。我正在尝试在DockerWSL2上使用BuildKit构建映像,提供~/.ssh/config:Host<... 查看详情

或针对协议缓冲区版本 3.5.1 编译的工具,与已安装版本不兼容

】或针对协议缓冲区版本3.5.1编译的工具,与已安装版本不兼容【英文标题】:ORToolscompiledagainstversion3.5.1oftheProtocolBuffer,notcompatiblewithinstalledversion【发布时间】:2019-04-1112:15:06【问题描述】:我使用pipinstallortools在我的Mac上安装... 查看详情

我可以控制 Docker 映像中绑定安装卷的所有者吗?

】我可以控制Docker映像中绑定安装卷的所有者吗?【英文标题】:CanIcontroltheownerofabind-mountedvolumeinadockerimage?【发布时间】:2015-07-2009:04:14【问题描述】:我有一个包含Eclipse的docker映像。我在名为eclipse的帐户下运行映像中的eclips... 查看详情

docker和tomcat有啥关系呢

两者不是同一种类型。1、docker是容器,tomcat是jsp应用服务器2、tomcat可以安装在物理机上,虚拟机上,也可以安装在Docker上。所以从这个角度讲,Docker也可以看做是一种超轻量化的虚拟机。3、Docker可以安装在物理机,虚拟机上,... 查看详情