问题描述
我想以单个命令运行conda命令。 命令是:
singularity exec ~/dockerimage.sif conda
/.singularity.d/actions/exec: 9: exec: conda: Permission denied
这是我的dockerfile:
FROM ubuntu:20.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y apt-utils wget=1.20.3-1ubuntu1 python3.8=3.8.2-1ubuntu1.2 python3-pip=20.0.2-5ubuntu1 python3-yaml=5.3.1-1 git=1:2.25.1-1ubuntu3
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.8.3-Linux-x86_64.sh && chmod +x Miniconda3-py38_4.8.3-Linux-x86_64.sh && ./Miniconda3-py38_4.8.3-Linux-x86_64.sh -b && cp /root/miniconda3/bin/conda /usr/bin/conda
RUN wget https://data.qiime2.org/distro/core/qiime2-2020.8-py36-linux-conda.yml && conda env create -n qiime2-2020.8 --file qiime2-2020.8-py36-linux-conda.yml && conda install -y -n qiime2-2020.8 -c conda-forge -c bioconda -c qiime2 -c defaults q2cli q2template q2-types q2-feature-table q2-Metadata vsearch snakemake
我应该添加到Dockerfile中什么?它将如何工作?
解决方法
您正在使用conda默认设置进行安装,这会将其放置在当前用户的家中。该用户为root
。奇点将以您当前的用户身份运行,因此,除非您以root用户身份运行,否则conda文件将不可用。
- 修改conda install命令以设置安装前缀:
-p /opt/conda
(或其他任意位置) - 确保任何用户都可以访问使用conda安装的文件:
chmod -R o+rX /opt/conda
- 更新
PATH
以包含conda:export PATH="$PATH:/opt/conda/bin"
- 运行图像时,请确保环境变量未覆盖容器中的环境变量:
singularity exec --cleanenv ~/dockerimage.sif conda