有的环境比较难配,在镜像里配置的版本总是与本地不同,导致程序起不来,今天就用个最基础的镜像,去配置anaconda,然后直接导入虚拟环境。
本次使用镜像:nvcr.io/nvidia/cuda:12.2.0-runtime-ubuntu20.04,1.97G的镜像。
直接
# 先直接进去配置
docker run -i -t nvcr.io/nvidia/cuda:12.2.0-runtime-ubuntu20.04 /bin/bash
# 需要先更新一下包
apt update
apt-get update
# 安装一下wget,用于下载anaconda包
apt-get install -y wget
# 下载anaconda
wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
这里下载完毕后,需要安装一下,这里先是要给一下执行权限
# 赋权命令:
chmod +x Anaconda3-2023.09-0-Linux-x86_64.sh
# 安装命令:
sh Anaconda3-2023.09-0-Linux-x86_64.sh
这里需要一直按enter,直到出现选择yes or no,输入yes就行,停住不动的地方使用enter即可。
然后这里exit退出容器,直接打包即可。
docker commit 容器号 镜像名
激活之类的,可以直接在dockerfile里去写,暂时不需要在~/.bashrc改了
这里激活主要遇到的坑是:
1、虚拟环境激活的问题,不能直接写在sh文件里运行
2、激活后如何运行python的问题,有博客说过:“CMD 自动启动服务时,会因为CMD设置的启动服务指令,在执行source之前,所以还是会报错”
docker 启动某个镜像时,执行source ~/.bash_profile方法_docker source-CSDN博客
3、挂载代理的问题,需要在dockerfile里写好ENV
这里上一下最后的解决方法
FROM conda_docker
# 拷贝虚拟环境文件夹,但是不要放code文件夹下,因为后面我需要挂载机器上的目录到code里,放code文件夹里会被覆盖
COPY ./conda_env /home/conda_env
COPY ./main.py /home/code
WORKDIR /home/code
ENV http_proxy http://……
ENV https_proxy http://……
ENV PATH /root/anaconda3/bin:$PATH
# 激活虚拟环境
RUN /bin/bash -c "source /home/conda_env/bin/activate"
RUN echo "source /home/conda_env/bin/activate" >> ~/.bashrc
# 保证能用conda里的python运行
ENV PATH /home/conda_env/bin:$PATH
CMD ["python","main.py"]
EXPOSE 8080