gpt4 book ai didi

docker - docker与已激活的conda环境进行交互运行

转载 作者:行者123 更新时间:2023-12-02 19:14:21 24 4
gpt4 key购买 nike

我想创建一个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交互输入时,激活的env是 (base)
另外,我尝试使最后一个命令为 CMD conda activate my_env,但是它仅运行该命令,并且不进入交互模式。

最佳答案

每个RUN语句(包括docker run)都在新的shell中执行,因此不能简单地在RUN命令中激活环境并期望它在后续的RUN命令中继续处于 Activity 状态。
相反,您需要在 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
并确保这是在Conda添加的部分之后。

关于docker - docker与已激活的conda环境进行交互运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64323539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com