1

我有一个def文件来构建一个容器(在 Vagrant VM 中)。如果我构建为沙盒:

sudo singularity build --sandbox mytest/ mytest.def

然后构建完成。但是,如果我直接构建到容器:

sudo singularity build mytest.sif mytest.def 

然后我得到一个错误:

FATAL:   While performing build: While creating SIF: while creating container: writing data object for SIF file: copying data object file to SIF file: write mytest.sif: no space left on device

如果我尝试将沙箱转换为容器:

sudo singularity build mytest.sif mytest/

然后我得到同样的错误。

文档没有说明构建与沙箱所需的空间量。我可以增加 Vagrant VM 的大小,但最好知道我应该增加多少以确保构建成功

4

1 回答 1

3

大小取决于图像。如果您是从 docker 映像构建的,则可以查看它以根据其大小获得一个大致的概念。但是,重要的是要知道在哪里放置额外的驱动器空间。

除了您正在构建的目录之外,Singularity 还使用 tmp 目录(默认值:)/tmp和缓存目录(默认值:) 。请注意,缓存目录不使用您的用户主目录,因为. 默认情况下, VM 通常具有较小的、 和/或分区。过去这对我来说是一个问题,也可能会影响你。$HOME/.singularity/cache/root/.singularity/cachesudo singularity buildsudo//root/tmp

如果需要,您可以--tmpdir在构建时使用标志将其更改为具有更多空间的位置(请参阅此处的文档)。

要更改默认缓存目录,您必须设置环境变量SINGULARITY_CACHEDIR,详细信息请参见此处的文档。您也可以SINGULARITY_TMPDIR以相同的方式设置,而不是使用--tmpdir标志。有时最好将所有环境修改保存在一个地方。

于 2019-11-05T11:20:07.500 回答