Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker run interactive与conda环境已激活_Docker_Dockerfile_Conda - Fatal编程技术网

docker run interactive与conda环境已激活

docker run interactive与conda环境已激活,docker,dockerfile,conda,Docker,Dockerfile,Conda,我想创建一个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中,我包含了安装conda、创建环境和激

我想创建一个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中,我包含了安装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交互进入时,激活的环境是
(基本)


另外,我尝试让最后一个命令为
CMD conda activate my_env
,但它只是运行该命令,而没有进入交互模式。

每个
RUN
语句(包括
docker RUN
)都在新的shell中执行,因此,不能简单地在
RUN
命令中激活环境,并期望它在随后的
RUN
命令中继续处于活动状态

相反,您需要在shell初始化过程中激活环境。
SHELL
命令已经更改为包含
--login
,这非常好。现在您只需将
conda activate my_env
添加到
.profile
.bashrc

...
# Create and activate the environment.
RUN conda env create --force -f environment.yml
RUN echo "conda activate my_env" >> ~/.profile
确保这是在康达添加的部分之后