在 docker 文件中运行 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

在 Dockerfile 中执行 anaconda 之前,您必须在构建时使用ENV变量将 anaconda 添加到PATH

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

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

最新更新