我正在尝试使用一些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。
ENV
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更新.bashrc中的PATH可以在使用时在容器内调用conda docker run,但不能在RUNdocker文件中的其他语句中调用。
docker run
RUN