标签: singularity-container

如何从 dockerfile 构建奇异容器

我想从 dockerfile 构建奇点容器。

我已经从 docker hub 中提取并运行了 docker 镜像。

singularity pull docker://ubuntu:latest
Run Code Online (Sandbox Code Playgroud)

我还从奇点配方文件构建了图像。

singularity build  cpp.sif singularity_file
Run Code Online (Sandbox Code Playgroud)

但我想从 dockerfile 构建奇异图像。

任何人都知道该怎么做。是否可以 ???

docker singularity-container

13
推荐指数
2
解决办法
6166
查看次数

在 Singularity/Apptainer 构建期间使用主机的 SSH 密钥

当从定义文件构建 Singularity/Apptainer 映像时,是否有一种可移植的方法可以在构建过程中使主机系统的 SSH 密钥可用?

给出一些背景:

我有一个定义文件,在%post我使用 SSH 克隆私有 git 存储库的部分中,即:

git clone git@github.com:luator/private_repo.git
Run Code Online (Sandbox Code Playgroud)

此操作会失败,因为在构建期间主机系统的 SSH 密钥在容器中不可用。

我可能可以复制容器中的密钥,并在构建过程结束时将其从那里删除。但是,为此,我需要对定义文件中密钥的路径进行硬编码,这在路径不同的另一台计算机上使用相同的定义文件时很糟糕。git clone在构建过程中是否有更便携的方式来完成工作?

git ssh-keys singularity-container apptainer

9
推荐指数
1
解决办法
916
查看次数

奇点相当于“docker镜像列表”

是否存在与 等价的奇点docker image list?Singularity 3.8 文档指出

所有缓存条目均使用内容哈希命名

这在检查相同的图层/图像时有意义,但没有任何语义意义。将其与 docker 进行比较,dockerdocker image list列出了您已经拥有的具有语义意义名称的映像(例如 ubuntu、ros)。例子:

$ singularity cache list -v
NAME                     DATE CREATED           SIZE             TYPE
496a66ed93a0244167905e   2021-07-23 18:20:26    0.57 KiB         blob
6b05187eae388023ea3f9d   2021-07-23 18:20:26    0.34 KiB         blob
a31c7b29f4ad2bd9467389   2021-07-23 18:20:26    27.24 MiB        blob
sha256.9b0dafaadb1cd1d   2021-07-24 14:37:56    90.46 MiB        library
sha256.cb37e547a142499   2021-07-23 18:10:22    55.39 MiB        library
b3e2e47d016c08b3396b5e   2021-07-23 18:20:29    26.45 MiB        oci-tmp
Run Code Online (Sandbox Code Playgroud)

相对

$ docker image list
REPOSITORY               TAG        IMAGE ID       CREATED         SIZE
foxy-moveit2-tutorials   latest     ca302410c537   3 weeks …
Run Code Online (Sandbox Code Playgroud)

docker singularity-container

9
推荐指数
1
解决办法
3405
查看次数

是否存在"多用户"Docker模式,例如科学集群?

我想使用Docker来隔离用于HPC Unix集群的科学应用程序.科学软件通常具有外来依赖性,因此将它们与Docker隔离似乎是一个好主意.这些计划将作为工作而不是作为服务运行.

我希望有多个用户使用Docker,用户应该相互隔离.这可能吗?

我执行了本地Docker安装,并且在docker组中有两个用户.docker images对两个用户显示相同结果的调用.

此外,作业应在调用用户的UID下运行,而不是以root身份运行.

这样的设置是否可行?以前做过吗?这记录在哪里?

docker singularity-container

8
推荐指数
2
解决办法
6689
查看次数

Snakemake + docker示例,如何使用卷

让我们有一个简单的蛇文件

rule targets:
    input:
        "plots/dataset1.pdf",
        "plots/dataset2.pdf"

rule plot:
    input:
        "raw/{dataset}.csv"
    output:
        "plots/{dataset}.pdf"
    shell:
        "somecommand {input} {output}"
Run Code Online (Sandbox Code Playgroud)

我想归纳出绘图规则,以便它可以在docker容器中运行,

rule targets:
    input:
        "plots/dataset1.pdf",
        "plots/dataset2.pdf"

rule plot:
    input:
        "raw/{dataset}.csv"
    output:
        "plots/{dataset}.pdf"
    singularity:
        "docker://joseespinosa/docker-r-ggplot2"
    shell:
        "somecommand {input} {output}"
Run Code Online (Sandbox Code Playgroud)

如果我了解得很好,当我运行时,我会在docker容器中snakemake --use-singularity获得该somecommand运行,如果不对容器进行一些卷配置,则无法找到输入的csv文件。

您能否提供一个小的工作示例,说明如何在Snakefile或其他Snakemake文件中配置卷?

docker snakemake singularity-container

6
推荐指数
1
解决办法
663
查看次数

奇点提取、编辑和重建图像

我有一个为我制作的奇点容器(用于在 Comet GPU 节点上运行张量流),但我需要根据我的目的修改 keras 安装。

我知道.simg文件不可编辑(并且不推荐使用可写格式),因此不鼓励转换为文件、编辑然后转换回的.img过程:.img.simg

sudo singularity build --writable development.img production.simg
## make changes
sudo singularity build production2.img development.simg
Run Code Online (Sandbox Code Playgroud)

在我看来,最好的方法可能是提取内容(比如放入沙箱中),编辑它们,然后将沙箱重建为.simg图像。

我知道如何进行第二次转换(singularity build new-sif sandbox),但我该如何进行第一次转换?

我已尝试以下操作,但该命令从未完成:

sudo singularity build tf_gpu tensorflow-gpu.simg
WARNING: Authentication token file not found : Only pulls of public images will succeed
Build target already exists. Do you want to overwrite? [N/y] y
2018/10/12 08:39:54 bufio.Scanner: token too long
INFO:    Starting build...
Run Code Online (Sandbox Code Playgroud)

squashfs singularity-container

6
推荐指数
1
解决办法
5189
查看次数

为什么 `singularity run/exec` 会自动绑定特定的某些目录?使用案例是什么?

我熟悉容器,但对 Singularity 很陌生,今晚我发现自己在 Singularity 容器中与损坏的 Python 安装作斗争。事实证明,这是因为在$HOME我不知情的情况下被安装到我的容器中。

我想我已经喜欢上了 Python 中的“显式优于隐式”这句话。对我来说,自动安装特定目录是意想不到的行为。

三个问题:

  1. 为什么 Singularity 默认挂载 $HOME、/tmp、/proc 等?
  2. 为了让我能够更加适应 Singularity,这种行为有哪些用例?
  3. 我看到了该--no-home标志,但是是否有一个标志可以禁用所有默认安装而不需要更改默认的 Singularity 配置?

singularity-container

6
推荐指数
1
解决办法
3529
查看次数

如何从奇点镜像构建docker镜像

我目前正在研究奇异性和 docker。我正在运行 MPI 环境的奇点。

我想利用 MPI 的奇点优势,但奇点文件非常大。因此,在运行奇点映像后,我想将其转换为 docker 映像,然后保存它,这将节省磁盘空间。

是否可以将奇点图像转换为 docker 图像?

containers docker singularity-container

5
推荐指数
2
解决办法
4458
查看次数

Singularity 容器中的文件所有权和权限

当我运行时singularity exec foo.simg whoami,我从主机获取自己的用户名,这与在 Docker 中我获取root或容器指定的用户不同。

如果我查看/etc/passwd这个 Singularity 容器的内部,就会发现已为我的主机用户 ID 添加了一个条目/etc/passwd

如果我不知道程序运行时的用户 ID,如何制作便携式 Singularity 容器?

我已将 Docker 容器转换为 Singularity 映像,但它希望作为它定义的特定用户 ID 运行,并且已将多个目录chown分配给该用户。当我在 Singularity 下运行它时,我的主机用户无权访问这些目录。

这将是一个黑客,但我可以修改所有这些目录的图像chmod 777。有没有更好的方法让这个图像像任何用户一样在 Singularity 上工作?

(我正在运行 Singularity 2.5.2。)

hpc singularity-container

5
推荐指数
1
解决办法
5021
查看次数

奇点:如何释放循环设备?

在服务器上,我们将持续集成作业作为奇点图像的运行脚本运行,例如

wget url_to_mysingularityimage.sif
chmod +x ./mysingularityimage.sif
./mysingularityimage.sif
Run Code Online (Sandbox Code Playgroud)

如果这是相关的:在我们的具体情况下,运行脚本是一个 bash 脚本。效果很好。

执行作业后,图像将被删除。

rm ./mysingularityimage.sif
Run Code Online (Sandbox Code Playgroud)

但看起来对应的循环设备仍然存在,即

losetup -a | grep mysingularityimage.sif
Run Code Online (Sandbox Code Playgroud)

输出类似:

/dev/loop27: []: (/path/to/mysingularityimage.sif (deleted)), offset 40960, sizelimit 831307776
Run Code Online (Sandbox Code Playgroud)

当我们运行作业时,循环设备的数量会增加。在某些时候,达到了循环设备的限制数量,奇点失败并出现错误:

FATAL:   container creation failed: mount /proc/self/fd/3->/usr/local/var/singularity/mnt/session/rootfs error: while mounting image /proc/self/fd/3: failed to find loop device: could not attach image file to loop device: no loop devices available
Run Code Online (Sandbox Code Playgroud)

我们是不是做错了什么?是否有一个命令我们需要在每个作业结束时运行以确保循环设备被“释放”?

(注意:我们使用bamboo进行持续集成,并且bamboo总是在新目录中执行工作,这可以解释为什么相同的循环设备没有被重用。Bamboo:https: //www.atlassian.com/software/bamboo) 。

linux mount bamboo singularity-container

5
推荐指数
0
解决办法
3248
查看次数