有的环境比较难配,在镜像里配置的版本总是与本地不同,导致程序起不来,今天就用个最基础的镜像,去配置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即可。

docker里安装conda,并source本地已有的虚拟环境包-LMLPHP

 然后这里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
01-26 03:39