为磁盘上的奇点图像创建永久缓存。
singularity-permanent-cache的Python项目详细描述
奇点永久缓存为上的奇点图像创建永久缓存 磁盘。它以一个URI作为参数并返回图像的位置。它 利用文件锁来防止缓存损坏。在
它将使用 SINGULARITY_PERMANENTCACHEDIR或SINGULARITY_CACHEDIR环境 变量来确定缓存的位置。或者缓存目录 可以在命令行上使用-d或--cache-dir标志进行设置。在
singularity-permanent-cache命令可以在脚本中使用。是的 设计时考虑了多进程的使用:文件锁可以防止损坏 当奇点永久缓存的多个实例 跑步。它可以用在这样的脚本中:
#!/usr/bin/env bash set -eu -o pipefail exportSINGULARITY_PERMANENTCACHEDIR=$HOME/.singularity/permanent_cache MY_IMAGE_URI="docker://debian:buster-slim"IMAGE_LOCATION=$(singularity-permanent-cache $MY_IMAGE_URI) cluster_submit "singularity exec $IMAGE_LOCATION echo 'Hello world!'"
Singularity永久缓存将下载debian buster slim图像 如果它还不在缓存中。如果它已经存在,它就不会再加载任何东西 在缓存里。在
警告
不要对带有不稳定标记的图像使用singularity-permanent-cache 例如docker://ubuntu:latest。一旦docker_ubuntu_latest.sif 图像在缓存中,singularity-permanent-cache将永远不会检查 更新版本!在
使用具有稳定标记的容器,例如biocontainers或使用哈希。(例如: ubuntu@sha256:a69390df0911533dd2fc552a8765481bf6a93b5d5952a9ddbe9cb64ca3479e17。)
注意
singularity永久缓存使用了一个filelock,它只在以下情况下工作: 多个singularity永久缓存进程在同一个上启动 机器。如果在连接的多台计算机上启动多个进程 对于同一网络文件系统,则可能发生缓存损坏。在
使用
除了singularity-permanent-cache,还将spc作为 安装程序包时的速记。singularity-permanent-cache是 也可以作为独立脚本singularity_permanent_cache.py提供。在
singularity-permant-cache没有依赖项,只需要一个现代 python版本(3.5或更高版本)。在
^{pr2}$致谢
非常感谢@TMiguelT,@illustional和@vsoch的建设性意见 关于this PR for Cromwell的反馈导致 本程序的开发。在
filelock实现基于py-filelock。 非常感谢@benediktschmitt&contributors为这个filelock示例提供帮助 他们把它公之于众。在
- 项目
标签: