scientific-computing - 使用 nextflow 创建奇点容器
问题描述
我正在尝试构建一个安装了 nextflow 的奇异容器。完成构建后,我将其安装在目录中,并将其安装为 ROOT。当我尝试运行容器时,它失败了,因为我不是 root。我查看了最佳实践,它说以下内容:
始终将包、程序、数据和文件安装到操作系统位置(例如,不是 /home、/tmp 或任何其他可能经常绑定的目录)。
我的定义文件:
BootStrap: yum
OSVersion: 7
MirrorURL: http://mirror.centos.org/centos-%{OSVERSION}/%{OSVERSION}/os/$basearch/
Include: yum
%post
yum -y install java-1.8.0-openjdk-headless
yum -y install wget
yum -y install which
mkdir /s2fast
cd /s2fast
wget -qO- https://get.nextflow.io | bash
%runscript
exec /s2fast/nextflow
运行它让我“权限被拒绝”我正在运行奇点 3.4.0-1
不确定我是否应该考虑使用绑定路径、叠加层或其他东西?
解决方案
如果您的容器只需要Nextflow,我可以建议使用 quay.io 的 Nextflow 生物容器吗?
singularity pull docker://quay.io/biocontainers/nextflow:19.07.0--hecc5488_0
如果您需要与 Nextflow 一起安装其他应用程序,通常会将它们安装到/usr/local/bin
. 但是像您正在做的那样使用自定义目录路径并没有错。在任何情况下,您都需要确保这些应用程序具有必要的权限。只需添加chmod 755 /s2fast/nextflow
到您的%post部分。同时删除您的%runscript部分。除非您需要处理命令行参数,否则通常不需要它。
推荐阅读
- javascript - 成功登录时更改窗口位置
- ios - 如何防止 navigationBarTitle 占满全角?
- php - 是否有一种编程方式来区分 bash 脚本是由用户执行还是通过 PHP 中的 shell_exec 执行?
- python - 在 mypy 中为什么 boolean 会传递浮点类型注释
- java - 如何在 java 中使用终端转义码?
- python - 在 python subprocess.popen 中通过标准输入发送输入
- ui5-tooling - 新项目的ui5初始化失败
- androidviewclient - ValueError:收到的不包含有效的 XML:已终止
- python - 为什么这里的多重赋值会产生意想不到的结果?
- python - Rabbitmq/Pika - 在 python 中获取给定队列的消费者列表