Singularity container 奇点沙盒文件管理
受够了与lib安装/依赖问题的斗争,我开始使用Singularity。 尽管如此,我不确定自己是否确切地理解了它在沙箱模式下的文件管理(而不是数据、程序)是如何工作的。 例如,我设计了一个非常简单的定义文件,它只是一个“裸”Debian: 我创建了一个沙盒,其中包含以下内容:Singularity container 奇点沙盒文件管理,singularity-container,Singularity Container,受够了与lib安装/依赖问题的斗争,我开始使用Singularity。 尽管如此,我不确定自己是否确切地理解了它在沙箱模式下的文件管理(而不是数据、程序)是如何工作的。 例如,我设计了一个非常简单的定义文件,它只是一个“裸”Debian: 我创建了一个沙盒,其中包含以下内容: sudo singularity build --sandbox Test/ naked_Debian.def 我试着安装一个程序。但我不明白的是,我成功地做到了,删除了沙盒目录,但我认为仍然有在沙盒生命周期中创建的文件
sudo singularity build --sandbox Test/ naked_Debian.def
我试着安装一个程序。但我不明白的是,我成功地做到了,删除了沙盒目录,但我认为仍然有在沙盒生命周期中创建的文件(在/dev、/run、/root等中)。例如,我从git克隆的程序现在位于本地的/root中(独立于任何容器)。
据我所知,所有东西都在容器中,如果我删除沙盒目录,它们就会消失。否则,我会把所有的测试都搞得一团糟?然后我无法将容器从一个系统移植到另一个系统
如果我创建任何新的沙盒目录,程序已经存在
干杯,
Mathieu默认情况下,singularity将
$HOME
装载到容器中,并将该路径用作singularity shell/exec
的工作目录。由于您正在使用sudo运行沙箱,/root
正在装载,如果您没有cd
到其他目录,那么您克隆的任何repo都会在这里结束<代码>/tmp也会自动装入,但这不太可能导致问题,因为它只是临时文件
您有几个选项可以避免文件最终出现在您不希望出现的地方
singularity shell--没有主页…
- 默认的工作目录现在是
,而不是/
,文件直接在沙箱中创建(与装入目录相反)$HOME
- 如果要从沙箱中取出文件,则需要将文件从容器中复制到
,并在主机操作系统上从/tmp
复制到所需位置/tmp
singularity shell--home$PWD…
- 这将装入并使用当前目录作为主机操作系统上用户的
,而不是用户的$HOME
$HOME
- 在主机操作系统和容器之间移动文件更简单,但仍然在主机操作系统中创建文件
singularity shell--contain--workdir/some/dir…
和/tmp
的目录是在/var/tmp
中创建的,而不是在主机上使用/some/dir
和/tmp
/var/tmp
与主机具有相同的路径,并用作工作目录,但它为空且与主机操作系统分离$HOME
- 与主机操作系统完全分离,同时仍允许在容器和操作系统之间进行一些访问
有关这些选项的其他详细信息。默认情况下,singularity将
$HOME
装载到容器中,并将该路径用作singularity shell/exec
的工作目录。由于您正在使用sudo运行沙箱,/root
正在装载,如果您没有cd
到其他目录,那么您克隆的任何repo都会在这里结束<代码>/tmp也会自动装入,但这不太可能导致问题,因为它只是临时文件
您有几个选项可以避免文件最终出现在您不希望出现的地方
singularity shell--没有主页…
- 默认的工作目录现在是
,而不是/
,文件直接在沙箱中创建(与装入目录相反)$HOME
- 如果要从沙箱中取出文件,则需要将文件从容器中复制到
,并在主机操作系统上从/tmp
复制到所需位置/tmp
singularity shell--home$PWD…
- 这将装入并使用当前目录作为主机操作系统上用户的
,而不是用户的$HOME
$HOME
- 在主机操作系统和容器之间移动文件更简单,但仍然在主机操作系统中创建文件
singularity shell--contain--workdir/some/dir…
和/tmp
的目录是在/var/tmp
中创建的,而不是在主机上使用/some/dir
和/tmp
/var/tmp
与主机具有相同的路径,并用作工作目录,但它为空且与主机操作系统分离$HOME
- 与主机操作系统完全分离,同时仍允许在容器和操作系统之间进行一些访问
有关这些选项的更多详细信息。感谢tsnowlan提供的详细回答!因此,如果我理解正确,文件的管理方式独立于“build sandox”命令,但完全取决于如何使用“shell”来“进入”沙盒容器?感谢tsnowlan提供的详细答案!因此,如果我理解正确,文件的管理方式独立于“build sandox”命令,但完全取决于如何使用“shell”来“进入”沙盒容器?
sudo singularity build --sandbox Test/ naked_Debian.def