作者:我是你的小pig的美丽家园 | 来源:互联网 | 2022-10-21 15:38
我已经尝试了好几个小时,无法在构建过程中弄清楚如何在Dockerfile中激活和切换anaconda环境。
这是初始代码:
FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu16.04
# Set user
ENV SETUSER myuser
RUN useradd -m $SETUSER
USER $SETUSER
WORKDIR /home/$SETUSER
# Install Anaconda
RUN wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh
RUN bash Anaconda3-2019.03-Linux-x86_64.sh -b
RUN rm Anaconda3-2019.03-Linux-x86_64.sh
# Set path to conda
ENV CONDA_ENV_NAME mynewenv
RUN /home/$SETUSER/anaconda3/condabin/conda create -q --name $CONDA_ENV_NAME python=3.6 && \
/home/$SETUSER/anaconda3/condabin/conda clean --yes --all
RUN /home/$SETUSER/anaconda3/condabin/conda activate base #Just for testing anaconda environment
首先,Docker中的anaconda会抱怨外壳设置不正确,因此在conda create命令之后添加了:
RUN /home/$SETUSER/anaconda3/condabin/conda init bash
RUN /bin/bash -c "source /home/$SETUSER/.bashrc"
RUN /home/$SETUSER/anaconda3/condabin/conda activate base
在构建docker镜像后运行3个命令即可(即在调用docker run container-name之后交互运行),但是由于某种原因,在构建容器时不起作用。我发现$ PATH变量在构建期间未更新,因此在构建时和构建后比较我的$ PATH。
ENV PATH /home/$SETUSER/anaconda3/envs/$CONDA_ENV_NAME/bin:$PATH
ENV PATH /home/$SETUSER/anaconda3/condabin:$PATH
ENV PATH /home/$SETUSER/anaconda3/bin:$PATH
RUN conda init bash
RUN /bin/bash -c "source /home/$SETUSER/.bashrc"
RUN conda activate base
现在,构建时的Docker $ PATH和构建后运行容器时进行交互修改时的$ PATH是相同的,但是我仍然遇到了shell无法正确设置的错误。
CommandNotFoundError:您的外壳尚未正确配置为使用“ conda activate”。要初始化您的shell,请运行$ conda init。当前支持的shell是:-bash-fish-tcsh-xonsh-zsh-powershell有关更多信息和选项,请参见'conda init --help'。重要信息:运行“ conda init”后,您可能需要关闭并重新启动Shell。
为什么这不起作用???
我已经看到使用miniconda docker模板可能有解决方法,但是我不能使用它。如何在Docker构建过程中创建和切换anaconda环境?谢谢!