如果我有一个使用buildah mount的脚本。我使用文档指定的相同方式,
mnt=$(buildah mount $ctr)如果我调用我的脚本sh ./build.sh,我会得到
无法在无根模式下使用驱动程序覆盖挂载。您需要在
buildah unshare会话中运行它。
问题是,在这里出现故障时,脚本不会终止。我可以通过测试if [-z $mnt]; then echo "Run with buildah-unshare; exit; fi来检查它,但这并不理想,因为那时我仍然拥有我正在做的以前的buildah from。
如果您试图支持无根的buildah,有什么方法可以确保在buildah unshare下运行buildah呢?
发布于 2020-11-14 23:47:38
一种方法是确保根用户映射到某个对象。如果在主用户名称空间上运行cat /proc/self/uid_map,您将看到uid=0映射为0,对应于所有用户4294967295的长度。这是一个虚拟映射(更多信息请参见man namespaces )。
$ cat /proc/self/uid_map
0 0 4294967295如果该文件中的虚拟映射是而不是,则您处于子用户命名空间中。
# If we find the dummy line, error and exit
grep -lE '^\s+0\s+0' /proc/self/uid_map \
&& echo "Please run under buildah unshare" \
&& exit发布于 2020-11-16 14:34:27
在当前的buildah版本中,当不运行用户名称空间时,buildah mount就会崩溃。
$ buildah mount
cannot mount using driver overlay in rootless mode. You need to run it in a `buildah unshare` session
$ echo $?
125
$ buildah -v
buildah version 1.17.0-dev (image-spec 1.0.1-dev, runtime-spec 1.0.2-dev)https://unix.stackexchange.com/questions/619664
复制相似问题