问题标签 [singularity-container]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
julia - 尝试在奇异容器中安装系统范围的 Julia 应用程序时出现注册表问题
我正在尝试构建一个能够运行我编写的 Julia 应用程序的奇异容器。
我是根据包含 Julia 1.2 的官方 docker 映像来执行此操作的。这是我的定义文件:
%post
当我尝试julia
实例化项目时,构建在该阶段失败:
如果我使用相同的 docker 映像来构建“沙盒”容器 ( singularity build --sandbox <the folder> docker://julia:1.2-buster
),并通过 使用它singularity shell --writable <the folder>
,我可以作为普通用户执行此项目实例化步骤,并且它似乎可以工作。
如果我以 root 身份尝试,则会发生相同的ERROR: Package FASTX [c2308a5c-f048-11e8-3e8a-31650f418d12] not found in a registry.
错误。
如果(在该可写沙箱中仍以 root 身份),我尝试在 REPL 中执行相同的问题:
这是在系统范围内安装 Julia 应用程序的正确方法吗?
(或多或少在我尝试https://discourse.julialang.org/t/julia-packages-with-singularity/19883/8的早期步骤中交叉发布,还没有答案)
编辑(2019 年 9 月 23 日)
感谢@David Varela的回答,使用Pkg.Registry.add(Pkg.RegistrySpec(; url="https://github.com/JuliaRegistries/General.git")); Pkg.Registry.add(Pkg.RegistrySpec(; url="https://github.com/BioJulia/BioJuliaRegistry.git"));
我现在有一个工作定义文件:
但是,生成的图像需要一个对于我们的计算集群来说太新的内核。
因此,我想尝试基于 构建类似的图像,但在Julia 1.1 之前不存在docker://julia:1.0-stretch
注册表操作 API 。Pkg
是否有替代 1.0 兼容的方式来获取丢失的注册表?
自我回答:
我发现注册表可以使用git“手动”获取,如下:
(在上面,我使用 root 的.julia
目录,因为 root 是构建和安装应用程序的目录。)
需要注意的是:应用程序的实例化和构建可以在没有Manifest.toml
文件的情况下继续进行。我发现了这一点,因为我试图删除这个文件作为尝试删除包的版本限制的一部分。
scientific-computing - 使用 nextflow 创建奇点容器
我正在尝试构建一个安装了 nextflow 的奇异容器。完成构建后,我将其安装在目录中,并将其安装为 ROOT。当我尝试运行容器时,它失败了,因为我不是 root。我查看了最佳实践,它说以下内容:
始终将包、程序、数据和文件安装到操作系统位置(例如,不是 /home、/tmp 或任何其他可能经常绑定的目录)。
我的定义文件:
运行它让我“权限被拒绝”我正在运行奇点 3.4.0-1
不确定我是否应该考虑使用绑定路径、叠加层或其他东西?
docker - 如何将 args 从 docker 替换为奇异点?
我正在尝试提取 docker 映像,但必须使用奇异性。我怎样才能做到这一点?这是我正在运行的脚本。
我得到的错误是ERROR: Unknown option: --build-arg
ERROR: Unknown option: -it
.
任何帮助,将不胜感激。我是使用奇异容器而不是 docker 的新手
singularity-container - 使用“shell”命令运行 Singularity 容器时自动源配置
我使用奇异容器(从定义文件构建)来构建我的项目的代码。我使用它的方式是运行容器,singularity shell my_container.sif
使我的工作空间安装在容器中,然后运行命令以在那里构建。
为了使构建工作,我首先需要获取一个配置文件来设置环境,创建一些别名等。这个配置文件是容器的一部分。所以目前在容器内我执行以下操作:
我想知道/setup.bash
当我使用singularity shell
. 我尝试使用%environment
定义文件中的部分,但似乎无法在那里创建别名。
singularity-container - 奇点:图像、容器和实例之间有什么区别?
我开始学习 Singularity 以对科学管道进行可重复分析。一位同事解释说,图像用于实例化容器。但是,在阅读文档和教程时,instance
也使用了该术语,并且使用image
andcontainer
似乎可以互换。所以,我不确定我是否完全理解图像、容器和实例之间的区别。我确实知道食谱是用于构建其中一个的文本文件(我认为是图像?)。
例如,在此页面上,它解释了:
现在我们可以将定义文件构建成图像了!只需运行
build
,图像就可以使用了:
好的,所以这使用配方Singularity
来构建图像,直观的扩展名为.img
. 但是,build
命令的帮助描述指出:
$ 奇点帮助建立
用法:singularity [...] build [build options...]
build 命令根据配方(定义文件)或基于 URI、位置或存档编译容器。
所以这似乎表明我们正在构建一个容器?
然后,有image
和instance
子命令。
所有这些术语可以互换使用吗?有时它们似乎是,有时它们之间存在差异。
docker - 奇点无法虚拟化文件系统命名空间:不允许操作
我正在尝试从以下Dockerfile
(构建命令:)在 Docker 容器中运行 Singularity 容器docker build -f ./Dockerfile -t rocker-singularity .
:
使用命令:
但我得到错误:
我搜索了很多并发现了这个问题,但提出的解决方案不起作用。你能帮忙吗?
singularity-container - 建造 Singularity 容器需要多少空间?
我有一个def
文件来构建一个容器(在 Vagrant VM 中)。如果我构建为沙盒:
然后构建完成。但是,如果我直接构建到容器:
然后我得到一个错误:
如果我尝试将沙箱转换为容器:
然后我得到同样的错误。
文档没有说明构建与沙箱所需的空间量。我可以增加 Vagrant VM 的大小,但最好知道我应该增加多少以确保构建成功
python - Singularity-Container + Python + PyTorch:为什么“import torch”在 Arch Linux 主机上工作但在 Centos 7 主机上失败?
我正在尝试构建一个奇异容器,以在基于 CentOS 7 的集群上运行 Python 脚本。容器在我的主机上按预期运行,我也用它来创建容器,但一旦导入 PyTorch,就会在集群上失败。
这个问题可以通过这个最小定义文件的容器构建来重现:
调试.def:
它是用sudo singularity build debug.sif debug.def
. 容器和我的主机都在 Arch Linux 上运行。
在我的主机上执行容器输出 PyTorch 版本:
在集群上运行它会导致以下错误:
我不明白为什么找不到该文件,因为它应该包含在容器中:
我假设导入时搜索中不包含相应的路径,并且由于某些环境设置泄漏到容器中,因此我的主机上不会出现此问题。我也尝试使用Sylabs Remote Builder,但它似乎无法构造 Arch 容器(在 $PATH 中找不到pacstrap )。尝试在其中一个节点上构建容器会导致同样的问题;Pacstrap和pacman不可用。
我束手无策,非常感谢任何解释这种行为的提示!为什么找不到共享库,怎么可能修复?
更新#1:
这是 LD_LIBRARY_PATH 环境变量的内容(响应@tsnowlan)。
Arch Linux 主机:
CentOS 7 集群节点:
更新#2:
我确实设置了一个新的干净的 VM(也运行 arch),它也在那里重建了容器。这个容器显示了同样的问题;它在我的主机上运行,但不在 CentOS 7 集群上。
recipe - 奇点容器中的默认路径
我对容器空间非常陌生,在学习了一些教程之后,我试图让我自己的奇点容器启动并运行。
我的食谱如下:
我试图弄清楚如何将下载的二进制文件添加到可执行路径中。我希望帖子部分中下载的文件会显示在容器内的 /home/ 或类似文件中,但是当我使用singularity shell myImage.simg
.
caching - 一个脚本的词汇,无论它在哪里运行,它都会产生相同的输出
我想要一些关于使用什么词汇来描述以下内容的建议。拥有正确的词汇将使我能够搜索与概念相关的工具和想法
我想说一个脚本是 SomeWord 如果无论它在哪里运行,它都会产生相同的输出。
例如,以下脚本不是SomeWord:
因为当然这取决于它在哪里执行。
而以下(如果它运行没有错误)预计将始终产生相同的输出:
一个更有用的示例是加载和运行 docker 或奇异容器的方式,以保证正在使用非常特定的容器映像。例如,通过其内容哈希检索奇点图像。
SomeWord 脚本的优点是:(a) 它们可以在远程系统上安全运行,而无需担心环境;(b) 它们的输出可以被缓存。