问题标签 [buildah]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
132 浏览

azure - 将使用 buildah 构建的映像从 Azure 容器注册表部署到 Azure 容器实例

因此,我使用 Buildah 构建了一个映像并将其推送到 ACR(天蓝色容器注册表),但是我尝试的任何方法,AZ cli、门户、terraform,部署到 ACI(天蓝色容器实例)的部署在 30 分钟后都会失败,原因是暂停。ACI创建成功,镜像可以从ACR成功推拉,镜像本地使用podman运行。ACI 在尝试从映像创建容器时挂起。

显示错误

原始错误

关于可能是什么问题的任何建议?

0 投票
1 回答
40 浏览

docker - 它继续使用缓存,而新版本可用

Dockerfile 包含:

一旦构建,它就再也不会运行它,而是使用缓存。只要版本(pip's + conan's)没有改变,我就很好。

处理这种情况的最佳做法是什么?docker/buildah如果有新版本,我想检测是否需要更改图层。故意地,我没有添加任何版本来始终获得最新版本。

我很难找到我遇到的错误的原因,柯南在新版本中更改了他们的 SSL 证书,而我被以前的版本卡住了,阻止我安装包。

0 投票
2 回答
629 浏览

argo-workflows - Buildah vs Kaniko

我正在使用 ArgoWorkflow 来自动化我们的 CI/CD 链。为了构建镜像,并将它们推送到我们的私有注册表,我们面临着选择 buildah 或 kaniko。但我无法指出两者之间的主要区别。利弊,以及这些工具如何处理并行构建和缓存管理。谁能澄清这些观点?或者甚至建议另一种可能以更简单的方式完成工作的工具。关于这个主题的一些澄清将非常有帮助。提前致谢。

0 投票
0 回答
156 浏览

ssh - 如何使用 podman 的 ssh 构建标志?

我一直在使用docker build--ssh标志来让构建从 ssh-agent 访问我的密钥。

当我用 podman 尝试同样的事情时,它不起作用。我正在开发 macOS Monterey 12.0.1。英特尔芯片。我也在 Ubuntu 和 WSL2 上复制了这个。

这是一个示例 Dockerfile:

当我运行DOCKER_BUILDKIT=1 docker build --ssh default .它时,即构建成功,repo 被克隆并且 ssh 密钥没有被烘焙到图像中。

当我运行podman build --ssh default .构建失败时:

我刚刚开始玩 podman。查看文档,该标志似乎受到支持。我尝试过使用这种格式,例如直接指定 id,但到目前为止没有指定标志或挂载的变化。关于 podman 的工作原理,我可能会遗漏一些东西来解释这一点吗?

按照评论中的建议添加此行:

导致此错误:

编辑:

我相信这可能与buildah 中的这个问题有关。修复已合并,但据我所知尚未发布。

0 投票
1 回答
62 浏览

c++ - 使用 debootstrap 进行迭代容器配置,就像 buildah 的'scratch'

从理论上讲,容器配置的迭代方法的想法真的很吸引我。在实践中,我很难让它发挥作用,尤其是在 podman/buildah 的无根生态系统中。

我开始觉得 podman/buildah 不是 debian 派生的 linux 发行版的最佳容器开发堆栈。一方面,apt 不支持 dnf 的“--installroot”选项/指令。我尝试将 debootstrap 与 buildah 的“scratch”一起使用,但没有成功……即,我收到“无法安装到目标”错误。

我应该说,我成功地将一个简单的 pod 与运行 NGINX、postgres 和服务的容器组合在一起,这是一个 c++ 库,我使用它来构建一个小型应用程序,用于代理来自 Web 前端的数据库绑定发布请求。问题在于它是一个杂项,主要症结在于基于服务的 C++ 应用程序。在编译和运行时依赖之间,我不确定最好的方法;不用说,我目前的方法行不通。

我会感谢经验丰富的从业者在基于 debian 的发行版上使用无根容器解决方案的任何和所有提示,尤其是。如果您正在推出自己的 C++ 微服务:我真的很想知道您进行配置的策略。提前谢谢了。

0 投票
0 回答
7 浏览

dockerfile - 组合/分量 OCI 图像

假设我有一个Dockerfilefor 图像A,然后我有一个用于包的阶段,B它可以与图像一起使用,A但对于A. 所以我做了一个FROM A AS B并继续前进。但是,C哪个与 . 具有相似的状态呢B?我可以再次继承,但不是所有B需要的用户,也不是所有需要C的用户。当你有这样的组件时,它会变得更加复杂,甚至有些组件有依赖关系——有些没有。我们基本上有一个组件系统。您不希望用户每次都必须重建图像,并且希望将这些图像理解为层或以尽可能节省空间和缓存的方式(并且代码应该是 DRY)。CBn

用 Docker/Buildah/Podman 处理这个问题的最优雅的方法是什么?解决方案应该是可移植的。

我知道 Dockerfiles 的多重继承本质上是不可能的,但是像安装包这样的特定任务呢?

0 投票
0 回答
52 浏览

docker - 是什么导致构建容器时`ApplyLayer exit status 1 stdout:stderr:permission denied`?

我正在创建一个 Gitlab CI 管道。管道应该创建一个容器并将其发布到私有容器注册表。

但是创建容器buildah bud -t ${CI_REGISTRY_IMAGE}/${CI_COMMIT_BRANCH}:${CI_COMMIT_SHA} .失败:

问题似乎出在:

但是在这种情况下,权限被拒绝意味着什么?我该如何解决?

我尝试了该帖子的解决方案。其中表示将用户添加到docker组中。但这没有用。无论如何,我没有看到任何buildah需要 docker 组的内容。

0 投票
0 回答
46 浏览

kubernetes - 为什么 buildah 在 Kubernetes 容器中运行失败?

嘿,我正在创建一个 Gitlab 管道,并且我在 Kubernetes 中有一个运行器。在我的管道中,我正在尝试将应用程序构建为容器。

我正在使用 构建容器buildah,该容器在 Kubernetes pod 中运行。管道运行时kubectl get pods --all-namespaces显示 buildah pod:

管道运行 buildah login -u gitlab-ci-token -p ${CI_BUILD_TOKEN} ${CI_REGISTRY}buildah bud -t ${CI_REGISTRY_IMAGE}/${CI_COMMIT_BRANCH}:${CI_COMMIT_SHA} . 使用 Dockerfile 使用FROM parity/parity:v2.5.13-stable. 然而,Buldah bud 失败了,并打印:

我在考虑两个可能的原因:首先构建容器,然后将其存储在 kubernetes pod 中,然后再将其传输到容器注册表。由于 Pod 没有任何持久存储,因此写入失败,因此出现此错误。

第二个是容器被构建并推送到容器注册表,由于某些原因它没有权限并且失败。

哪一个?我该如何解决?如果是第一个原因,我是否需要为运行 pod 的 serviceaccount 添加持久卷权限?

0 投票
1 回答
13 浏览

npm - buildah 似乎无法处理 `npm install` 写入文件“`/sys/fs/cgroup/cgroup.subtree_control`:不支持操作”

情况

当我尝试使用 buildah 构建容器映像时出现以下错误。

环境/步骤

  1. 我已经安装buildah在一个名为tools-image
  2. 我在 macOS 上运行这个tools-image容器
  3. 我使用 docker 运行tool-image容器
  4. 我启动tools-image容器
  1. 我在里面使用tools-image buildah来构建一个example application容器镜像

我在命令example application中使用的容器映像的 Dockerfilebuildah bud

这是Dockerfile.

我执行时出错

0 投票
0 回答
9 浏览

kubernetes - 为什么在 gitlab 运行器 pod 中使用 buildah 时出现“应用层时出错:不允许操作”?

嘿,我有一个 Gitlab 运行程序(kubernetes 执行程序),它正在管道内构建容器。

管道在带有 image: 的 pod 内运行,quay.io/buildah/stable并在调用时失败buildah bud .

我尝试在一个新的 pod 中重新创建它:kubectl run -it buildah --image containers/buildah --command tail -f /dev/null使用更简单的 Dockerfile:

它奏效了。使用 pod 外的实际项目进行构建也可以。我不知道如何将项目安装到 pod 中,所以我还没有在其中构建整个项目。

那么为什么它不在 gitlab runner 中运行呢?这可能是 gitlab 运行器中的错误配置吗?