【发布时间】:2021-06-05 16:42:59
【问题描述】:
我已经构建了一个奇点容器并将其上传到我的 HPC 服务。
有没有办法在不重建整个容器的情况下更改 .sif 文件的运行脚本?我在服务上有一个 shell。
根据我对奇点的理解,这应该是可能的,但我不知道如何。
【问题讨论】:
标签: containers hpc
我已经构建了一个奇点容器并将其上传到我的 HPC 服务。
有没有办法在不重建整个容器的情况下更改 .sif 文件的运行脚本?我在服务上有一个 shell。
根据我对奇点的理解,这应该是可能的,但我不知道如何。
【问题讨论】:
标签: containers hpc
您可以编辑文件<YOUR_CONTAINER.sif>/singularity,因为它包含运行脚本。
对于文件<YOUR_CONTAINER.sif>/environment 的环境也可以这样做。
【讨论】:
cd <YOUR_CONTAINER.sif>,然后使用像 nano 这样的文本编辑器来编辑文件:nano singularity。我使用命令sudo singularity build --sandbox <YOUR_CONTAINER.sif> <YOUR_CONTAINER.def> 来获取容器。我认为这就是为什么容器就像一个目录。
--sandbox 的情况下构建的,所以它是一个文件而不是文件夹。
您可以将 SIF 文件转换为(可写)沙箱,该沙箱确实是一个目录:
sudo singularity build --sandbox <SANDBOX> <CONTAINER>.sif
然后你可以“进入”沙箱并在那里修改东西(注意--writable标志和sudo的需要):
sudo singularity shell --writable <SANDBOX>
或者您可以按照 Quentin 的建议编辑 <SANDBOX>/singularity 或 <SANDBOX>/environment。
一旦您对更改感到满意,您就可以将沙盒转换回(新)SIF 文件:
sudo singularity build <NEW_CONTAINER>.sif <SANDBOX>
【讨论】: