我想创建一个docker镜像,使得当您交互运行它时,一个conda环境已经被激活。
当前状态:
docker run -it my_image
(base) root@1c32ba066db2:~# conda activate my_env
(my_env) root@1c32ba066db2:~#
期望状态:
docker run -it my_image
(my_env) root@1c32ba066db2:~#
更多信息:
在我的Dockerfile中,我包含了所有必要的RUN
命令来安装conda、创建环境并激活环境。以下是相关部分的复制:
SHELL [ "/bin/bash", "--login", "-c" ]
...
# Install miniconda.
ENV CONDA_DIR $HOME/miniconda3
RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
chmod +x ~/miniconda.sh && \
~/miniconda.sh -b -p $CONDA_DIR && \
rm ~/miniconda.sh
# Make non-activate conda commands available.
ENV PATH=$CONDA_DIR/bin:$PATH
# Make conda activate command available from /bin/bash --login shells.
RUN echo ". $CONDA_DIR/etc/profile.d/conda.sh" >> ~/.profile
# Make conda activate command available from /bin/bash --interative shells.
RUN conda init bash
# Create and activate the environment.
RUN conda env create --force -f environment.yml
RUN conda activate my_env
当我运行这个命令时,conda activate my_env
似乎运行并成功了。但是当我通过docker run -it
交互进入时,激活的环境是(base)
。
另外,我尝试将最后一条命令改为CMD conda activate my_env
,但这只会运行该命令而不进入交互模式。