dockerfile常規操作中介紹了安裝源更換、軟件更新、模塊安裝等命令,參考文件移步這裏。常規操作適用於容器內單個環境的情況,對於多個模型不同的運行環境時,一個個安裝會很麻煩,遇到模塊版本不同的情況就更尷尬了。今天介紹使用虛擬環境解決容器內多環境同時存在的情況。
- dockerfile文件
FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
RUN sed -i "s#archive.ubuntu.com#mirrors.aliyun.com#g" /etc/apt/sources.list \
&& sed -i "s#security.ubuntu.com#mirrors.aliyun.com#g" /etc/apt/sources.list #修改下載源
RUN apt-get upgrade -y \
&& apt-get update
ENV PATH="/root/anaconda3/bin:${PATH}" #conda運行環境加入系統環境
ARG PATH="/root/anaconda3/bin:${PATH}"
RUN apt-get install unzip
COPY Anaconda3-2020.02-Linux-x86_64.sh ./
COPY yolov5.zip ./
COPY run.sh ./
COPY requests_py2.7.txt ./ #默認環境的依賴模塊
COPY env_py36.yml ./ #虛擬環境1
COPY env_yolov5-py37.yml ./ #虛擬環境2
RUN unzip yolov5.zip \
&& bash Anaconda3-2020.02-Linux-x86_64.sh -b
RUN conda env create -f env_py36.yml \ #創建虛擬環境
&& conda env create -f env_yolov5-py37.yml
RUN pip2 install -U -r requests_py2.7.txt \ #安裝默認環境的依賴模塊
&& rm yolov5.zip \
&& rm Anaconda3-2020.02-Linux-x86_64.sh \
&& rm requests_py2.7.txt \
&& rm *.yml
RUN apt-get clean all #刪除安裝包
&& rm -rf /var/lib/apt/lists/* #安裝包狀態信息的存儲區
EXPOSE 7001 #開放鏡像端口
ENTRYPOINT ["/bin/bash", "run.sh"] #啓動鏡像後執行的文件,強烈建議使用bash作爲運行環境
- 啓動腳本
cd carinner #使用默認環境
nohup python2 service_carinner.py --port 7001 > /dev/null 2>&1 &
source activate py3.6 #啓動環境py3.6
cd ../openposeKps
nohup python service_kps.py --port 7002 > /dev/null 2>&1 &
cd ../scene
nohup python service_scene.py --port 7004 > /dev/null 2>&1 &
cd ../imgcrop
nohup python service_ipl.py --port 8001 > /dev/null 2>&1 &
conda deactivate #退出環境py3.6
source activate yolov5_py3.7 #啓動環境yolov5_py3.7
cd ../yolov5
python3 service_yolo.py --port 7003
conda deactivate #退出環境yolov5_py3.7
- 環境配置文件
- 生成環境配置文件命令
root@ffeffbc15c98:/workspace# conda activate py3.6
(py3.6) root@ffeffbc15c98:/workspace# conda env export >py3.6.yml
2. 配置環境內容
name: py3.6
channels:
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- ca-certificates=2020.1.1=0
- certifi=2020.4.5.2=py36_0
…………
- wheel=0.34.2=py36_0
- xz=5.2.5=h7b6447c_0
- zlib=1.2.11=h7b6447c_3
- pip:
- cffi==1.14.0
- numpy==1.18.5
…………
- torchvision==0.2.1
- tornado==6.0.4
prefix: /root/anaconda3/envs/py3.6
參考文獻: