我正在尝试使用 Anaconda 和其他一些东西创建一个 Docker 容器。安装 Anaconda 后,我需要激活它。当我跑
CONDA_PATH=$HOME/anaconda3
eval "$($CONDA_PATH/bin/conda shell.bash hook)"
从我的容器中它可以工作。但是当我将它包含到我的 Dockerfile 中时
ENV CONDA_PATH $HOME/anaconda3
RUN eval "$($CONDA_PATH/bin/conda shell.bash hook)"
它不是。
我知道 eval 将参数作为 shell 命令执行,但我对包装“$ ()”感到困惑 谁能解释它的实际作用?
我的 Dockerfile:
FROM ubuntu
MAINTAINER Kosh [email protected]
RUN apt-get update
RUN apt-get install htop
RUN apt-get install nano
WORKDIR /home
COPY Anaconda3-2020.02-Linux-x86_64.sh /home
ENV CONDA_PATH $HOME/anaconda3
RUN bash Anaconda3-2020.02-Linux-x86_64.sh -b -p $CONDA_PATH #silent Anaconda installation without activation
#RUN eval "$($CONDA_PATH/bin/conda shell.bash hook)"
RUN $CONDA_PATH/bin/conda shell.bash hook
#RUN conda init
#RUN conda install -c conda-forge -y tensorflow
CMD /bin/bash