为什么“exec init”在 podman 中有效,但在具有相同选项的 buildah 中无效?

为什么“exec init”在 podman 中有效,但在具有相同选项的 buildah 中无效?

这两个命令有何不同?他们都以 pid 1 启动 shell 并进行相同的安装和卷,

buildah run --tty --mount type=tmpfs,destination=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  $(buildah from centos:7) /bin/sh -c 'exec /sbin/init'

podman run -ti    --mount type=tmpfs,destination=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  centos:7                 /bin/sh -c 'exec /sbin/init'

但只有 podman 可以工作。我在这里误解了什么?

答案1

Podman run 为 init(systemd) 系统配置正确的运行环境。 Buildah 没有。我们的目标不是让 Podman 运行和 Buildah 运行相同。

buildah run 相当于 Continerfile(Dockerfile) 中的 RUN 命令。因为我从未见过有人创建像这样的 Containerfile

FROM centos:7
RUN /bin/init

这不是我们考虑过的事情,也不太可能支持。

相关内容