撰写dockerfile

按照官方文档说的,用conda activate env-name  依然会报错,要么说你shell 没有初始化

Anaconda3使用conda activate激活环境出错_执行程序

要么就是没有conda 这个命令

这里其实要注意一下

1,dockerfile 里每一个RUN  都相当于一个终端,写了多行的conda 命令的话,等于之前的无效

2,cicd 构建的时候,其实是/bin/sh 环境,即使用了conda init bash,有不会有任何改变

     有的人用source /root/.bashrc 来加载bash 环境,也会报错,source 会报,commond not found

     其实在linux 里面 source  就是一个点,就像./go  执行程序一样

3,最稳妥的办法是,在安装完miniconda3 之后,先不要继续写,直接打包成images,然后本地进入这个docker

   cat /root/.bashrc  

按照道理来讲,conda init bash 之后,会往.bashrc 写入conda 的环境变量,但是dockerfile build 之后,并没有写入

所以无法激活环境的根本原因是,在cicd通过dockerfile build 的时候,没办法进入bash,也就是常说的 (base)conda$ 环境

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/conda/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/opt/conda/etc/profile.d/conda.sh" ]; then
. "/opt/conda/etc/profile.d/conda.sh"
else
export PATH="/opt/conda/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<

我的.bashrc 文件 在最下面 conda 会写入以上 代码,这时候,可以创建一个txt 文件,在dockerflie,把txt 文件copy 到images里面,然后 强制写入到images中的/root/.bashrc,

要让配置生效,因为没有source,那么也可以执行

. /root/.bashrc

这样就生效了

这时候再执行 激活环境,就可以正常进入到 你要创建的虚拟环境了

conda activate mae

最后附上我的dockerfile,bash.txt文件内容就是上面在.bashrc 里的内容

FROM nvidia/cuda:11.3.0-cudnn8-devel-ubuntu20.04
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ >/etc/timezone && \
apt-get update && apt-get install -y \
software-properties-common apache2 curl git wget vim --no-install-recommends --no-install-suggests unzip && \
add-apt-repository universe && \
wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-py38_4.12.0-Linux-x86_64.sh -O ~/miniconda.sh && \
/bin/bash ~/miniconda.sh -b -p /opt/conda
ENV CONDA_DIR /opt/conda
ENV PATH=$CONDA_DIR/bin:$PATH
COPY requirements.txt /root/requirements.txt
COPY bash.txt /root/bash.txt
RUN conda install -c anaconda mkl && \
conda create -n mae_1 python=3.8 && \
cat /root/bash.txt >> ~/.bashrc && \
. ~/.bashrc && \
conda activate mae_1 && \
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge && \
git clone https://github.com/facebookresearch/mae.git && \
pip install timm==0.3.2 && \
pip install tensorboard && \
pip install submitit && \
pip install setuptools==59.5.0 && \
pip install pandas && \
pip install transformers==4.8.0 && \
pip install -r /root/requirements.txt \



参考:​​​​https://www.pythonheidong.com/blog/article/515487/26899ff94be7b9dcb173/​

   ​​​​​​https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html​

   ​​​​​​https://blog.csdn.net/u013515929/article/details/115267360​

​http://www.zhangweixi.cc/python/conda-zai-shell-jiao-ben-zhong-ti-shi-wei-chu-shi-hua.html​

  

Anaconda3使用conda activate激活环境出错_执行程序_02