美文网首页编程学习
singularity环境变量

singularity环境变量

作者: myshu | 来源:发表于2024-09-26 15:34 被阅读0次

    参考:

    首先可以先运行如下命令,看下当前镜像中的所有环境变量:

    singularity exec env.sif env
    

    HOME=/home/dave
    LANG=C
    LD_LIBRARY_PATH=/.singularity.d/libs
    PATH=/startpath:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PROMPT_COMMAND=PS1="Singularity> "; unset PROMPT_COMMAND
    PS1=Singularity>
    PWD=/home/dave/doc-tesrts
    SINGULARITY_COMMAND=exec
    SINGULARITY_CONTAINER=/home/dave/doc-tesrts/env.sif
    SINGULARITY_ENVIRONMENT=/.singularity.d/env/91-environment.sh
    SINGULARITY_NAME=env.sif
    TERM=xterm-256color

    其中常见的变量有这些

    • SINGULARITY_COMMAND how the container was started, e.g. exec / run / shell
    • SINGULARITY_CONTAINER the full path to the container image.
    • SINGULARITY_ENVIRONMENTpath inside the container to the shell script holding the container image environment settings.
    • SINGULARITY_NAMEname of the container image, e.g.myfile.sif or docker://ubuntu
    • SINGULARITY_BINDa list of bind paths that the user requested, via flags or environment variables, when running the container.

    我们使用比较多的应该就是SINGULARITY_ENVIRONMENTSINGULARITY_BIND分别用于设置环境变量和bind 路径

    设置/修改镜像中的环境变量,有如下几种方式。

    1、在def文件中设置环境变量

    def文件可以从一个现有的sif文件中构建镜像,可以在构建的过程中直接设置好环境变量。

    %environment
    export VARIABLE_NAME=value

    示例:

    %environment
        export LC_ALL=zh_CN.UTF-8  #C  这里可以兼容上特殊字符
        export PATH=/miniconda3/bin:$PATH
    

    此外,如果你想要在构建过程中根据条件设置环境变量,你可以在%post 部分使用 shell 脚本来设置它们:

    %post
    echo "Setting environment variables"
    export MY_ENV_VAR=some_value
    echo "MY_ENV_VAR=$MY_ENV_VAR" >> /environment

    示例:

    %post
         echo ". /miniconda3/etc/profile.d/conda.sh" >>  $SINGULARITY_ENVIRONMENT
         echo "source /miniconda3/bin/activate st_seurat_v4" >> $SINGULARITY_ENVIRONMENT
         echo "export R_USER_CACHE_DIR=/miniconda3/envs/test/wget_lib/" >> $SINGULARITY_ENVIRONMENT  # /.singularity.d/env/91-environment.sh
    

    这里的$SINGULARITY_ENVIRONMEN对应的就是/.singularity.d/env/91-environment.sh

    这个文件下文会讲到,是镜像环境中的一个环境变量设置文件。

    2、在.singularity.d/文件夹设置环境变量

    如果是使用容器构建镜像,则需要在Singularity容器中进行环境变量的设置。

    /.singularity.d/env/ 目录是一个特殊的目录,用于存储环境变量文件。这些文件在容器启动时按照顺序被自动执行,以设置或修改环境变量。以下是一些常见的文件:

    1. 01-base.sh:
      通常用于设置基础环境变量,而其他以90-, 99-开头的脚本文件可能会设置更具体的环境变量或应用特定的配置。
    2. 90-environment.sh
      这是一个环境变量文件,通常用于设置<u>容器启动时的环境变量</u>。你可以在这个文件中添加任何需要的环境变量。对应的是def中%environment中的变量
    3. 91-environment.sh
      类似于 90-environment.sh。是def文件在%post中设置到$SINGULARITY_ENVIRONMEN的变量
    4. 94-appsbase.sh:
      这个文件可能用于设置与容器内特定应用程序相关的环境变量,如应用程序的安装路径、配置文件路径等。
    5. 95-apps.sh
      类似于94-appsbase.sh,这个文件可能用于设置其他应用程序的环境变量或执行应用程序特定的环境配置。
    6. 99-base.sh:
      这个文件可能用于设置一些最终的环境变量或执行最后的清理工作,这些工作在容器启动前完成。

    3、在命令行设置环境变量

    在Singularity 3.6之后的版本,可以使用 --env--env-file 在运行的命令行中设置环境变量。
    示例:

    singularity run --env MYVAR=Goodbye env.sif
    

    相关文章

      网友评论

        本文标题:singularity环境变量

        本文链接:https://www.haomeiwen.com/subject/toqfrjtx.html