docker - 在 dockerfile 中运行 conda update 的问题

标签 docker anaconda dockerfile conda

我正在尝试使用一些 conda 环境创建一个 docker 容器。当我以交互模式运行容器时

conda update --all
conda env create -f env.yml

运行没有问题。但是,每当我尝试使用收到的 Docker 文件执行这些命令时
/bin/sh: 1: conda: command not foud

Docker 文件如下所示:
FROM ubuntu:latest
RUN apt-get update && \
    apt-get install unzip && \
    mkdir /install && \
    apt-get install nano
COPY Anaconda3-2018.12-Linux-x86_64.sh env.yml /install/
WORKDIR /install
RUN bash Anaconda3-2018.12-Linux-x86_64.sh -b && \
    echo "export PATH="/root/anaconda3/bin:$PATH"" >> ~/.bashrc && \
    /bin/bash -c "source ~/.bashrc"
RUN conda update --all
RUN conda env create -f env.yml

因此,似乎正在使用 sh 而不是 bash,因此我将 Dockerfile 编辑为以下内容:
FROM ubuntu:latest
RUN apt-get update && \
    apt-get install unzip && \
    mkdir /install && \
    apt-get install nano
COPY Anaconda3-2018.12-Linux-x86_64.sh env.yml /install/
WORKDIR /install
RUN bash Anaconda3-2018.12-Linux-x86_64.sh -b && \
    echo "export PATH="/root/anaconda3/bin:$PATH"" >> ~/.bashrc && \
    /bin/bash -c "source ~/.bashrc"
RUN /bin/bash -c "conda update --all"

出现以下错误
/bin/bash: conda: command not found

最佳答案

您必须在构建期间使用 ENV 将 anaconda 添加到 PATH在 Dockerfile 中执行 anaconda 之前的变量。

RUN bash Anaconda3-2018.12-Linux-x86_64.sh -b && \
    echo "export PATH="/root/anaconda3/bin:$PATH"" >> ~/.bashrc && \
    /bin/bash -c "source ~/.bashrc"
ENV PATH /root/anaconda3/bin:$PATH
RUN conda update --all

当使用 docker run 运行时,更新 .bashrc 中的 PATH 将使在容器内调用 conda 成为可能。 ,但不在其他 RUN docker 文件中的语句。

关于docker - 在 dockerfile 中运行 conda update 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57292146/

相关文章:

anaconda - 是否可以将 conda 配置指定到环境文件中?

python - conda 'source deactivate' 产生错误 : too many arguments

Docker 容器在执行 docker run 命令时未启动

heroku - 如何在 Dockerfile 中从 Heroku 公开动态 $PORT?

docker - 卷作为文件夹安装

docker - 从另一个容器访问的Docker容器端口

python - 无法安装 Keras

asp.net-core - 如何在 Dockerfile 中正确使用 dotnet Restore

docker/bin/sh : COPY: command not found

iis - 远程连接到Dockerized IIS