AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1582294
Accepted
bmv
bmv
Asked: 2020-09-02 11:45:33 +0800 CST2020-09-02 11:45:33 +0800 CST 2020-09-02 11:45:33 +0800 CST

如何在奇点内运行 conda 命令?

  • 772

我想运行一个带有奇点的 conda 命令。命令是:

singularity exec ~/dockerimage.sif conda

它产生一个错误:

/.singularity.d/actions/exec: 9: exec: conda: Permission denied

这是我的码头文件:

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 中添加什么?它将如何运作?

docker anaconda
  • 2 2 个回答
  • 2781 Views

2 个回答

  • Voted
  1. Best Answer
    Konrad Botor
    2020-09-05T09:06:51+08:002020-09-05T09:06:51+08:00

    好的,从顶部开始,尝试从 Dockerfile 构建映像会导致:

    PackagesNotFoundError:当前频道不提供以下软件包:

    • q2模板

    我将继续假设您打算安装q2templates.

    在编写 Dockerfile 时,您应该以尽可能少的层数和尽可能小的最终图像为目标。

    为此,您应该遵循一些规则:

    1. 切勿RUN一个接一个地使用多个指令。
    2. 始终删除所有缓存、安装程序和其他不必要的文件。
    3. 不要安装非绝对必要的东西。
    4. 不要创建任何文件的相同副本 - 改用符号或硬链接。

    在您的情况下,所有 4 条规则都被打破 - 您有 3RUN条指令一个接一个,安装 Python 3.8 两次(一次作为系统包,一次使用 Miniconda),安装后不执行任何清理并将脚本复制conda到另一个目录。

    现在我们可以讨论 Docker-Singularity 的兼容性。

    Docker 容器内的进程默认以 user 身份运行root。这意味着$HOME 设置为/root,因此 Miniconda 安装到/root/miniconda3- 换句话说,在 root 的主目录中,只有 root 可以访问,即使里面的文件有a+rx 权限。

    Singularity 容器内的进程作为用户执行的命令运行singularity。

    这意味着您必须在其他地方安装 Miniconda/root并更改其安装目录的权限以允许每个人都可以访问:

    ./Miniconda3-py38_4.8.3-Linux-x86_64.sh -b -p /opt/miniconda3
    chmod --recursive a+rw /opt/miniconda3
    

    所以决赛Dockerfile是:

    FROM ubuntu:20.04
    
    ENV DEBIAN_FRONTEND=noninteractive
    
    RUN apt-get update && \
        apt-get install -y \
        apt-utils \
        wget=1.20.3-1ubuntu1 \
        git=1:2.25.1-1ubuntu3 && \
        apt-get clean && \
        rm -rf rm -rf /var/lib/apt/lists/* && \
        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 -p /opt/miniconda3 && \
        ln -s /opt/miniconda3/bin/conda /usr/bin/conda && \
        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 q2templates q2-types q2-feature-table q2-metadata vsearch snakemake && \
        chmod --recursive a+rw /opt/miniconda3 && \
        apt-get clean && \
        rm -rf /var/lib/apt/lists/* && \
        rm /qiime2-2020.8-py36-linux-conda.yml && \
        rm /Miniconda3-py38_4.8.3-Linux-x86_64.sh
    
    CMD ["/bin/bash"]
    

    这样您singularity exec ~/dockerimage.sif conda就可以工作并显示 conda 的使用情况。不幸的是,如果您尝试执行其他一些命令,例如。 singularity exec ~/dockerimage.sif conda run python -v您将收到类似于以下内容的错误:

    OSError:[Errno 30] 只读文件系统:'/opt/miniconda3/.tmp58csqy_a'

    因为 Singularity 容器是不可变的,除了挂载的目录。

    此外singularity exec ~/dockerimage.sif conda activate qiime2-2020.8将失败:

    CommandNotFoundError:您的 shell 未正确配置为使用“conda activate”。要初始化你的 shell,运行

    $ conda init <SHELL_NAME>
    

    目前支持的 shell 有:

    • 重击
    • 鱼
    • tcsh
    • 呸呸呸
    • zsh
    • 电源外壳

    有关更多信息和选项,请参阅“conda init --help”。

    重要提示:您可能需要在运行“conda init”后关闭并重新启动 shell。

    即使您已正确修改设置您的外壳(用 Bash 测试)。

    我设法使它工作的唯一方法是运行:

    singularity shell ~/dockerimage.sif
    

    然后在容器内

    conda init # Modifies .bashrc on your host machine
    source .bashrc # Loads modified .bashrc
    export LC_ALL=C.UTF-8 # Sets locale to UTF-8
    export LANG=C.UTF-8 # Sets locale to UTF-8
    conda activate qiime2-2020.8 # Activates the environment
    

    链接:

    GitHub 上的 Dockerfile Docker Hub上的图像(使用 tag latest,其他可能不起作用)

    • 2
  2. biocyberman
    2020-11-12T13:41:21+08:002020-11-12T13:41:21+08:00

    您可以查看此文件以了解我在构建期间如何运行 conda,以及有关我在运行期间如何使用 conda 的包装脚本。

    在 2020 年 11 月撰写本文时,还有更多conda activate <env_name>信息是错误的命令。更好的命令是source activate <env_name>. 我必须查看源代码才能弄清楚。

    • 0

相关问题

  • 使用 docker 获取 http://deb.debian.org/debian/dists/jessie-updates/InRelease 的问题

  • Nginx 为某些文件提供 404

  • 包枕头已安装但无法导入

  • 以 root 身份运行 docker 容器

  • 在 Windows 上与 Docker 守护进程通信

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve